Table of contents

  1. Welcome to the QCL
  2. Dress code
  3. Materials needed
  4. New Employee Sign On
    a.Before
    b.After
  5. Employee Materials
  6. Accounts and Software
  7. Logins and Passwords
  8. Schedule
  9. Graduate Fellows Meeting
  10. Editing the QCL-CMC Website
  11. Workshops
    a.Start of Semester
    b.Possible Workshops
    c.Confirming Dates with Instructors
    d.Worksflow
  1. Buying a ticket – Making sure it works
  2. Changing Website
  3. Checklist for a Typical Workday
  4. Building a Workshop
  5. Workshops Building
  6. Zoom Recording Downloads
  7. Qualtrics Make a Workflow
  8. How to schedule meetings on Zoom
  1. QCL Impact Report
  1. Qualtrics – Reports
  2. Localist – Reports
  3. Summaries
  4. Rough Draft Impact Report

1. Welcome to the QCL

Paragraph about QCL

Mission Statement


2. Dress code

Office Casual


3. Materials needed


4. New Employee Sign On

a. Before

  • Resume and Cover Letter and References
  • Interview
  • Acceptance

b. After

  • HR email
  • Talk about Schedule
  • Shadow a workshop
  • Employee Materials (Next page)
  • Download Software (Next page)
  • Make Accounts (Next page)

Claremont Campus Map


5. Employee Materials


6. Accounts and Software

Issues: contact another Graduate Fellow or IT ()


7. Logins and Passwords

Accounts Username Password
CMC Self-Service Account Management
CMC Email
Dashboards Events
GitHub
Workday
QCL Home page
Box
Bit.ly
Qualtrics
Localist
Zoom
Teams
Instagram

Firefox: bookmark websites


8. Schedule

Important Dates

Monday Tuesday Wednesday Thursday Friday
Workshop: 5pm – 7pm Current Fellow meeting: 9:30am-10am Biweekly Team meeting: 10am -11am Workshop: 10am-12pm

Days off: Holidays and Academic break


9. Graduate Fellows Meeting

QCL Fellows Meeting Agenda

Your assignments for the week


10. Editing the QCL-CMC Website

Every week, we update cmc.edu/qcl/qcl-workshop page, whenever we open or close registration + update our schedule

In terms of website access:

  1. Log in at cmc.edu/login
  2. Go to cmc.edu/qcl
  3. See “View,” “Edit,” and “Revisions” tabs right above body

website access


11. Workshops

a. Start of Semester

  • Topics
    • Pick
    • Dr. Park in Fellows meeting
  • Dates
    • Assign
    • Dr. Park in Fellows meeting
  • Instructors
    • Assign
    • Dr. Park in Fellows meeting

b. Possible Workshops

  • Dr. Park
    • R Programming Basics (level 1)
    • Data Wrangling with R (level 2)
    • Tableau (level 1)
  • Bhaven
    • Get Equipped with LaTeX (level 1)
    • Get Equipped with MATLAB (level 1)
  • Vanessa
    • Excel (level 1)
    • SQL (level 1) (Find cloud based complier that imports files like csv and sql)
    • GIS (level 1) (ArcGIS Online for Mac and Windows)
  • Sam Kim
    • STATA (level 1)
    • STATA (level 2) – develop with Sam Lee
  • Others (need instructors)

c. Confirming Dates with Instructors

Subject: QCL Workshops - confirming dates

Good afternoon Bhaven,

Happy Tuesday! I hope you are doing well! As the new semester approaches, I wanted to confirm if these dates work for you to instruct:

Monday, January 24, 2022, at 5pm - 7pm for Get Equipped with LaTeX as an online workshop

Monday, February 21, 2022, at 5pm - 7pm for Get Equipped with MATLAB (TBA as a hybrid, in-person, or online workshop due to the Covid policies)

We have only scheduled up to Spring Break, I will have to follow up in the future for the rest of the semester’s dates. Do these dates and time work for you to instruct the workshops?

Thank you,
Vanessa Arias Casillas
Graduate Fellow - Murty Sunak Quantitative and Computing Lab (QCL)
Claremont Mckenna College


d. Worksflow

Two weeks before day of workshop

  • Contact Instructor
  • Setup meeting
    • Agenda of meeting
    • Summary of localist
    • Software
    • Websites
    • Licenses

Instructors Notes turned into Summaries

Good afternoon [instructor’s name],

Happy Tuesday! I am looking forward to your dryrun of [workshop]! I am starting to create the registration page for the workshop and would like to get a bit of information from you about the workshop.

First, do you have a summary page for your workshop? I have an example of Sam Lee’s below:

example of Sam Lee’s

Second, do you have any pre-workshop requirements that the attendees need to do before the workshop? Like download programs or sign up for a license.
Third, what time did you want to do your workshop at 3pm-5pm or 4pm-6pm?
Fourth, would you like this workshop to be a hybrid, online only or in-person only?
Lastly, is there any information you would like me to let the attendees know about before walking into the workshop? like website where to download files or a note about the data.
Thank you for this information, it will help me in getting the workshop’s registration ready.

Thank you,
Graduate Fellow - Murty Sunak Quantitative and Computing Lab (QCL)

[QCL Workshop] Title

About this Event
Title
Summary
Agenda:
Learning Objectives: (You will learn how to)
Prerequisite:
Location:
Participants:

Example Instructors Notes turned into Summaries

[QCL Workshop] R Programming Basics (Level 1 – Coding)

About this Event

R Programming Basics (Level 1 - Coding)

Summary:
R is an open-source statistical programming language. R is widely used in industry as well as in academia for statistical analysis and data visualization. In this workshop, we introduce the basics of the R language and its programming environment through simple hands-on examples. This workshop is designed for beginners in R programming, so no prior knowledge of R programming is needed. However, general programming knowledge in any programming language will be help understand the programming concepts. We will be using RStudio Cloud for hands-on. Please create a free account at https://rstudio.cloud before join the workshop.

Agenda:
• Basics of R and RStudio • R Programming Environment: Workspace, Working Directory, Package • R objects (data structure and function) • R packages for data import and export • R graphics for simple plotting methods • Basic statistical analysis using R

Location:
Hybrid (In-person: QCL Classroom, Online: Zoom information will be provided to the attendees after registration) Click here to find your way to the QCL.

Participants:
CMC Students, Faculty, and Staff
___

Data Wrangling with R (Level 2 - Data)

Summary:
Data wrangling is the process of obtaining, cleaning, reshaping, and transforming raw (and messy) data into a useable form of processed (and tidy) data. It is known that a majority of data analysts and data scientists spend as much as 80% of their time on data wrangling. So it’s essential to get familiar with good data wrangling tools that help you save time and avoid errors. In this hands-on workshop, you will learn basic skills to import, export, clean, reshape, transform, and visualize data using well-known data science package called tidyverse.

Learning Objectives: (You will learn how to)
Import and export data Clean, reshape and transform data Make messy data into tidy data Visualize tidy data using ggplot2 (if time permits)

Prerequisites:
Basic knowledge of R and RStudio (e.g., R Programming for Beginners - Level 1) RStudio Cloud account; if you don’t have one yet, please create a new account from https://rstudio.cloud site. Tidyverse package; please make sure that you have installed the tidyverse package in your R environment. See https://www.tidyverse.org for more information.

Location:
Hybrid (In-person: QCL Classroom, Online: Zoom information will be provided to the attendees after registration) Click here to find your way to the QCL.

Participants:
CMC Students, Faculty, and Staff
___

GIS - Part 2 (Level 1 - Data) Workshop

About this Event

Summary:
This workshop will introduce you to the ever-expanding and fascinating world of geographic information systems (GIS). In three 2-hour sessions you will learn about what GIS is, how it is used in a multitude of industries and fields, and how to get started using GIS software. We will examine GIS concepts and software tools used to visualize real-world features, discover patterns, and communicate information. Primarily using ArcGIS Online (if you can hyperlink: https://doc.arcgis.com/en/arcgis-online/get-started/what-is-agol.htm) you will work with GIS maps, explore data, and analyze maps and data as you learn fundamental concepts that underlie GIS technology. Through a series of presentations, in-class tutorials, and homework assignments this workshop will give you a strong beginning foundation on how to make maps and explore spatial data to identify patterns and insights in your data you never knew possible. You will come away from this workshop with the understanding you need to start working with GIS and utilize it in your own work and explorations. You do not need any previous experience – just your own curiosity! Students in this workshop (in fact, all Claremont Colleges students) have free access to a wide variety Esri GIS products. For more information, check out the Claremont Colleges Library Geographic Information System (GIS) Services home page, https://library.claremont.edu/gis/

Learning Objectives: (You will learn how to)
Topics will include: • Introduction to the GIS Platform • Theoretical basis of GIS and the Geographic Approach • What can you do with GIS? • Understanding GIS data • An introduction to Coordinate systems and Projections • Acquiring and selecting GIS Data • Utilizing and preparing your own data for GIS • Creating maps – basic cartography, symbology • The US Census and GIS • Introductory Spatial Analysis • Sharing results – physical maps and the world online maps

Location:
The following event will be conducted in a hybrid format: • Virtual: Zoom • In-Person: QCL Classroom

Participants:
7C Students, Faculty and Staff
___

One week before day of workshop

Moderator

  • If you are instructing
    • Ask for whoever moderator a week before or instruct and moderate yourself.

Zoom

Step 1:

  • Go to meetings
    Go to meetings

Step 2:

  • Click on Schedule
    Click on Schedule

Step 3:

  • Go to QCL workshop
    Go to QCL workshop

Step 4:

  • Look for workshop you are working
    Look for workshop you are working

Step 5:

  • Fill in meeting information on Zoom then click save,
    • Description (Optional) comes from Instructor’s meeting
      Fill in meeting information on Zoom then click save, Description (Optional) comes from Instructor’s meeting

Step 6:

  • You will see this
    You will see this

Step 7:

  • On meeting tab, it should there
    On meeting tab, it should there

Localist

Step 1:

  • Start by copying an old event
    • Make sure you are working on copy
  • Fill in all information (Like below)
    • Click “Include Above in Schedule”
    • Delete the old Confirmed dates
    • Description is made from Instructor’s meeting
      Start by copying an old event

Step 2:

  • Fill out Location (Like below)
    • Check if event is only in-person, only virtual or hybrid
      Fill out Location (Like below)

Step 3:

  • Change the Owner to yourself
    • Check Vanity URL (qcl_workshop_stata_fa21_1117)
      Change the Owner to yourself

Step 4:

  • Add a Ticket Types
    • Virtual or In-Person (or both)
    • Make sure Virtual is always on Top
      Add a Ticket Types

Step 5:

  • Add a Virtual ticket name is ZOOM and drag to the right ticket type (pic wrong)
    • Then go into additional ticket options
      Add a Virtual ticket name is ZOOM and drag to the right ticket type (pic wrong)

Step 6:

  • Check to make sure settings are correct
    • Make sure Ticket availability dates correctly dated or left blank if you will manual turn off
      Check to make sure settings are correct

Step 7:

  • Add in-person ticket named QCL CLASSROOM and drag to the right ticket type (pic wrong)
    • Then go into additional ticket options
      Add in-person ticket named QCL CLASSROOM and drag to the right ticket type (pic wrong)

Step 8:

  • Check to make sure setting are correct
    Check to make sure setting are correct

Step 9:

  • Check to make sure that Attendees Questions are correct
  1. “Please enter your student ID # (Must be 8 characters). For all faculty/staff/non-Claremont Colleges person, please insert 00000000.” (Required)
  2. “Please indicate gender (male or female)”
  3. “Which one of the Claremont Colleges are you from?” (Required)
  4. “If not from the Claremont Colleges, where are you from?”
  5. “Are you a Freshman, Sophomore, Junior, Senior, Graduate Student, Faculty, Staff or Other?” (Required)
  6. “If Other, please specify:”
    Check to make sure that Attendees Questions are correct

Step 10:

  • Check to make sure you have the correct Event Capacity
    Check to make sure you have the correct Event Capacity

Step 11:

  • Publish or NOT
    • Make sure if you are publishing that the checkmark is checked
    • But if you want another Fellow to review then make sure publish is not checked
    • Then Click Save
  • TEST! TEST! TEST!
    • when you set up the registration pages, please test them by registering for the workshops and see if everything works fine including the email confirmation, Zoom links, etc.
  • Send Dr. Park an email + post a message on Teams so that I can announce them.
    Publish or NOT

Two days before day of workshop

Close Registration for workshop

Step 1:

  • For those that do not require extensive prior prep, let’s close them 5 pm a day before. And, 2 days prior for those that require requesting licenses
    • Go into event
    • Go into tickets
    • Click inactivate on any tickets that are active
      For those that do not require extensive prior prep

Step 2:

  • You should see the ticket status as inactivate
    You should see the ticket status as inactivate

Day before day of workshop

Qualtrics

Step 1:

  • Make sure to make a Sign and Exit one
    • Make copy of old one
    • Sign in for sign in (Fall_2021_Signin_Survey_SQL_Lvl1_Vanessa_Casillas_1119)
    • Exit for Exit (Fall_2021_Exit_Survey_SQL_Lvl1_Vanessa_Casillas_1119)
      Make sure to make a Sign and Exit one

Step 2:

  • Change name to workshop name and instructor
    Change name to workshop name and instructor

Step 3:

  • Change workshop sign-in for and Date/Time
    • Sign-in
      Change workshop sign-in for and Date/Time

Step 4:

  • Change workflow link
    • In email to the weird code
    • Make sure Dr. Park is getting an email sent to him
      Change workflow link In email to the weird code
      Make sure Dr. Park is getting an email sent to him

Step 5:

  • Exit
    Exit

Step 6:

  • Change workflow link
    • Make sure Dr. Park is getting an email sent to him
      Change workflow link Make sure Dr. Park is getting an email sent to him

Step 7:

  • Click Publish
    Click Publish

Step 8:

  • Copy link to use for Bit.ly later and hit publish
    • If you forget to get here, you can still get it when you make QR code
      Copy link to use for Bit.ly later and hit publish

Step 9:

  • Barcode for Word doc
    • Anonymous link will give you the link of the survey again to put into Bit.ly
    • Download QR code for word doc use
      Barcode for Word doc

Bit.ly

Bit.ly

Step 1:

  • Copy and paste the shorten link into word doc Copy and paste the shorten link into word doc

Step 2:

Flyer Word doc

  • Change to fit workshop
    • Title
    • Date & Time
    • Instructor
    • QR Code from Qualtrics
    • Shorten link from Bit.ly
      Change to fit workshop

Emails (to be written)

Reminder Email

  • Send out a reminder email.

  • Add

    • Virtual Work info: Zoom invitation link (just in case)
    • In-Person Info:
    • Anything instructor wants to relay
  • Example 1
    Example 1

  • Example 2
    Example 2

  • Example 3
    Example 3

  • Example 4

Dear MATLAB (Level 1 – Coding+Computing) Attendees:

Thank you for registering for the MATLAB (Level 1 – Coding+Computing) Workshop.

Getting Equipped with MATLAB (Level 1 – Coding+Computing)

Instructor: Bhaven Mistry (Assistant Director of the QCL)

Summary:
Want to learn to program, but don’t know where to start or what to install? MATLAB is a numerical computing language and environment that is surprisingly easy to use. Typically used by engineers and scientists, you can think of it as a very powerful, customizable calculator. But, interestingly, it’s this very characteristic that makes MATLAB an ideal language for programming beginners, even if you’re not mathematically inclined. In this workshop, we will step you through the basics of programming using the MATLAB coding environment. We will start by getting familiar with the software, learning the basics of variable assignment and manipulation, writing our own functions, and exploring some applications. If you’re completely new to programming, learning the fundamentals with MATLAB first is a great way to springboard into other languages. Alternatively, if you have some experience with programming, but have always wanted to learn what MATLAB is used for, this could be a good way to get your feet wet.

Pre-requisites:
Internet Use: Introductory level (search, log-in, navigation of websites, etc.) Software: Attendees are asked to have MATLAB on their computers for the workshop. MATLAB is available for CMC students and faculty at https://www.cmc.edu/information-technology/academic-software

Location:
Online (Attendees will receive the Zoom meeting information after registration)

Participants:

Open to all CMC Students, Faculty and Staff

I am attaching information for the workshop below:
QCL Workshop is inviting you to a scheduled Zoom meeting.

Topic: [QCL Workshop] Get Equipped with MATLAB

Time: Sep 29, 2021 03:00 PM Pacific Time (US and Canada)

Join Zoom Meeting

https://cmc-its.zoom.us/j/83773547610?pwd=Y2loa3VoWnQvWFQxUDg1V0xIbHBNdz09

Meeting ID: 837 7354 7610

Passcode: workshop!

Required Software/Account

https://www.cmc.edu/information-technology/academic-software

Let me know if you have any questions.

Best regards,
Vanessa Casillas
QCL Graduate Fellow

Attendees Emails

  • Go to Localist and click on event
    Go to Localist and click on event

  • Click on View Confirmed Tickets
    Click on View Confirmed Tickets

  • Click Export CSV
    Click Export CSV

  • Go to email and download the CSV
    Go to email and download the CSV

  • Open CSV and copy emails into your reminder email
    Open CSV and copy emails into your reminder email

Day of workshop

Moderator checklist

  • Morning of
    • Paste Zoom info in QCL Workshop – Workshop Control Booth chat in Teams
    • Send out reminders if you haven’t already
  • Show up 30 minutes before workshop
    • Print out flyers
      • Put on tables where the attendees will sit
    • Log into Zoom (workshops)
      • Start 30 minutes before
      • Check audio and video
      • Make Instructor co-host
      • Test runs with instructor
    • Get shorten links from bit.ly ready
    • Set-up camera
    • Put the spotlight on workshop video feed
    • Make sure the instructor is screensharing
  • Time of the workshop
    • Welcome everyone: (change when necessary for only virtual or only in person workshops)
      • Welcome to the QCL! Today’s workshop is (name of event) instructed by (name of instructor. My name is (your name) and I (as well as (other moderator)) will your moderators for today’s workshop. If you have any questions or concerns throughout the session, please write in chat for our virtual attendees or raise or have for our in-person attendees. Before we start, please make sure to sign in with either the QR code or the link provided. Lastly, this workshop will be recorded. Enjoy!
      • Link sign-in survey in chat and links for workshop from instructor Welcome! Please sign-in: https://bit.ly/3zDNzPj Link from instructor: https://github.com/CMC-QCL/Excel-L2-Workshop If you have any questions or concerns throughout the session, please write in chat @everyone. Thank you! Please sign-out: https://bit.ly/3EIOgdX
    • Click Record
      • Note: if on break, click pause not stop, we want the least number of files made
    • Check in attendees who attend on Localist
      • Cross check over Qualtrics to make sure that attendees take survey as well
    • Interrupt the instructor if an attendee online has a question or if the attendee in-person has not been seen raising their hand.
  • End of workshop
    • Link Exit survey in chat
    • Thank everyone for coming
    • Clean up and back up
  • Send email reminder if there is a low rate for surveys
  • Send zoom meeting recordings to attendees that attended
    • Note: after every semester we dump recordings into a box file, before CMC does it

Day after workshop

Qualtrics

  • Give “Collaborate” to instructor on surveys

Zoom Recordings

  • Only provided to the attendees that showed up for the workshop
  • Records are ready to send the next day after the workshop Open CSV and copy emails into your reminder email

Ending email example

Subject: Thank you for attending the (name of workshop) Workshop

Hello (name of workshop) attendees,

Thank you for attending the workshop.

I have provided the links for sign-in and sign-out:

Sign-in: (Link of survey)

Sign-out: (Link of survey)

Please make sure to complete the surveys, they count as your attendance. If you have already completed them, thank you.

(all pasted from zoom)

Note: records are only provided if you attend the workshop

Lastly, if there was any homework assigned for this workshop, please send all documents to: for grading.

Thank you, (your name) QCL Graduate Fellow

Workshop Issues

New attendees after closed registration

  • Email to student for information: (Do not to ask for people’s gender for the new attendee’s emails as it is optional on our form.)

Subject: [QCL] Online Workshop on name (date at time) and name (date at time)
[Bcc’d everyone else except QCL Fellows]

Hi (name of new attendee),

Would you like to register for both Excel 1 and Excel 2 sessions?

Also, are you able to provide me following information?
1. Please enter your student ID # (Must be 8 characters). For all faculty/staff/non-Claremont Colleges person, please insert 00000000.
2. Gender
3. Are you a Freshman, Sophomore, Junior, Senior, Graduate Student, Faculty, Staff or Other?

Please note that we usually close registration 1 to 3 days prior (depending on the preparation needed to set up a working environment) to workshop events.

Best regards,
QCL Graduate Fellow (put your name here)

  • Issue Ticket tab on Confirmed Tickets page Issue Ticket tab on Confirmed Tickets page

  • Fill in all info Fill in all info

  • After filling out the form, the attendee will get an email from Localist

    • Send out an email follow up to the new attendee

Subject: [QCL Workshop] Name of workshop – Availability

Hi (name of new attendee),

I have input your information into Localist for the (name of workshop) workshop.

You should have received a Localist ticket by now.

Please let me know if you have any questions.

Best regards, QCL Graduate Fellow (put your name here)

  • If you just input, the new attendee without information, send this email

Subject: [QCL Workshop] Name of workshop – Availability

Hi (name of new attendee),

I just received a message from Janna that you would like to register for the (name of workshop) workshop.

You should have received a Localist ticket by now.

Please let me know if you have any questions.

Best regards, QCL Graduate Fellow (put your name here)

  • Note: We typically have 15 seats but wait list is 5

Check attendee’s emails

  • Fix emails, sometimes they misspell their emails

e. Buying a ticket – Making sure it works

pic3 pic3
pic4 pic4
pic5 pic5
pic6 pic6
pic7 pic7
pic8 pic8
pic9 pic9

f. Changing Website

pic10 pic10 pic11 pic11 pic12 pic12 pic13 pic13

g. Checklist for a Typical Workday

This is if there is no workshop or appointment going on

  • Check email
    • Write back to anyone
    • Send any emails that have been on TODO list
    • Organize your emails in their respective folders Organize your emails in their respective folders
  • Update QCL website
  • Day after workshop
    • Send out email of closing workshop
      • Recording, survey links, thank you
  • Two weeks prior work
    • Check what is coming in two weeks
      • Set appointments to meet with instructors
        • Get summaries
        • Tools
        • Point points
        • files
        • Licenses
  • One week before work
    • Localist and zoom
    • Let Dr. Park know they are ready to be announced
  • Two days before work
    • Send out reminder emails to localist attendees for upcoming workshop
  • Get licenses information out
    • Close old Qualtrics surveys
    • Make new Qualtrics surveys for upcoming workshops
    • Make QR codes/Bit.ly for upcoming workshop Other work
    • Graphic Design
  • Make workshops
    • SQL
    • EXCEL
    • GIS
  • Workday
    • Put in schedule

h. Building a Workshop

Github

pic15

  • Files needed in Github
    • Pre-workshop requirements
    • Presentation pdf
    • Files for hand-on activities
    • README.md
      • A summary of the workshop for localist and zoom

A summary of the workshop for localist and zoom

Pre-workshop requirements PDF

  • Make in program you would like to use (i.e., Powerpoint, ArcGis Stories)
  • Make it into a PDF to send before workshop
  • Downloading software How to for Mac and Windows
  • License information
  • Explain what to bring to workshop

Presentation PDF * Make in program you would like to use (i.e., Powerpoint, ArcGis Stories) - Make it into a PDF to send after workshop - Beginners’ material for Level 1 - Required Slides (make sure to do the material in chucks) - Title page - Before we start - Download Information - Agenda - Overview - Vocabulary - Today’s Data - Demo Agenda - Demo Slides - Activity - Questions - Answers - Resources - Contact info

Files

  • Data files to import
    • Hand-on activities
  • Other files of interest

i. Workshops Building

  • In the past, the way we offer our workshop to specific institute like Lowe was that we (Cindy) worked with their admin or student leader to find good times for their fellows and RAs and offer a separate workshop(s) for them. I am thinking we would want to offer them a separate GIS workshop(s).

Who asked for QCL trainings:

(Rose Institute)
(Rose Institute)
(Roberts Environment Center)
(Student Manager Rose Institute)
(Psychology, asked for SPSS and Excel)

Who you can ask for QCL workshops:

Jeanine Finn (Unix Shell and Git)
Brandon Bak (Alteryx)
Cindy Cheng (Power BI)
Alfonso Landeros (Julia)
Aashita Kesarwani (ML)
Brad McCauley (bash script)

SQL dataset used for Fall 2020 attached.

j. Zoom Recording Downloads

We are reaching out today with a friendly and important reminder to please transfer or delete your older Zoom cloud recordings within your Zoom account to help ensure that we can continue to provide this service to our faculty and staff without accruing additional storage expenses.

Our Zoom cloud recording storage currently has a shared quota of 1 terabyte for all users and about 1 gigabyte of storage per individual user. However, we now have several Zoom accounts that are way over the 1 gigabyte storage allotment. To collectively help save space, we recommend that all users download their Zoom recordings and store them in an alternate location, such as Box where much more storage space is available. Once you’ve stored the recordings in an alternate location, please make sure to go back and delete the recordings from your Zoom cloud storage.

Action Needed:

  • If you use Zoom cloud recording – please follow the below instructions for offloading your recordings and then delete them off Zoom once transferred

How to Download Your Zoom Cloud Recordings:

  1. Login to the Zoom.us web portal (https://zoom.us)

  2. In the left-hand navigation menu, click Recordings (direct link: https://zoom.us/recording)

  3. Click More next to a meeting recording and click Download

Click More next to a meeting recording and click Download

  1. Click Download on the pop-up that appears

Click Download on the pop-up that appears

  1. Click Allow if prompted for permission to Download multiple files.

Click Allow if prompted for permission to Download multiple files.

  1. Check your Downloads folder for your recording files (.m4a for audio and .mp4 for video)

Once downloaded, you can upload your files to your Box account (https://claremontmckenna.box.com). Box has a very large storage capacity per user and can be increased when necessary.

Once your files are on Box or stored somewhere safe off Zoom, you can share your files with others using the instructions outlined in the attached PDF guide called “Sharing Files in Box”.

Alternatively, if you’d like to use local recording instead with Zoom, we have attached guides for this as well. However, we only recommend this for non-critical events and for use outside of the classroom setting.

pic20 pic20 pic21 pic21 pic22 pic22 pic23 pic23 pic24 pic24 pic25 pic25 pic26 pic26 pic27 pic27

k. Qualtrics Make a Workflow

  • Sign-in Survey

qual1 qual1 qual2 qual2 qual3 qual3 qual4 qual4 qual5 qual5 qual6 qual6 qual7 qual7 qual8 qual8 qual9 qual9 qual10 qual10 qual11 qual11 qual12 qual12 qual13 qual13 qual14 qual14 qual15 qual15 qual16 qual16

  • Exit Survey

qual17 qual17 qual18 qual18 qual19 qual19 qual20 qual20 qual21 qual21 qual22 qual22 qual23 qual23 qual24 qual24 qual25 qual25 qual26 qual26 qual27 qual27 qual28 qual28


l. How to schedule meetings on Zoom

meeting1 meeting1

meeting2 meeting2


12. QCL Impact Report

impact1 impact1


a. Qualtrics – Reports

ReportsQ1 ReportsQ1 ReportsQ2 ReportsQ2 ReportsQ3 ReportsQ3 ReportsQ4 ReportsQ4 ReportsQ5 ReportsQ5 ReportsQ6 ReportsQ6 ReportsQ7 ReportsQ7 ReportsQ8 ReportsQ8 ReportsQ9 ReportsQ9

b. Localist – Reports

ReportsL1 ReportsL1 ReportsL2 ReportsL2 ReportsL3 ReportsL3 ReportsL4 ReportsL4 ReportsL5 ReportsL5 ReportsL6 ReportsL6 ReportsL7 ReportsL7 ReportsL8 ReportsL8

c. Summaries

summaries1 summaries1

Missing Data missing1 missing1

Localist SumL1 SumL1

  • Need to get Event Name and Event ID from site and manually input it in sumL2 sumL2

Qualtrics sumQ1 sumQ1

Exit sumq2 sumq2 sumq3 sumq3

Sign in sumq4 sumq4 sumq5 sumq5

d. Rough Draft Impact Report

Rough1 Rough1 Rough2 Rough2 Rough3 Rough3 Rough4 Rough4 Rough5 Rough5

LS0tDQp0aXRsZTogIkdyYWR1YXRlIEZlbGxvd3MgSGFuZGJvb2siDQpzdWJ0aXRsZTogIk5ldyBlbXBsb3llZSBndWlkZSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KZGF0ZTogIkxhc3QgY29tcGlsZWQgb24gYHIgZm9ybWF0KFN5cy50aW1lKCksICclQiAlZCwgJVksIFRpbWU6ICVIOiVNJylgIg0KLS0tDQoNCiMjIyBUYWJsZSBvZiBjb250ZW50cw0KMS4gW1dlbGNvbWUgdG8gdGhlIFFDTF0oI1dlbGNvbWUgdG8gdGhlIFFDTCkgIA0KMi4gW0RyZXNzIGNvZGVdKCNEcmVzcyBjb2RlKSAgDQozLiBbTWF0ZXJpYWxzIG5lZWRlZF0oI01hdGVyaWFscyBuZWVkZWQpICAgDQo0LiBbTmV3IEVtcGxveWVlIFNpZ24gT25dKCNOZXcgRW1wbG95ZWUgU2lnbiBPbikgICANCiAgYS5bQmVmb3JlXSgjQmVmb3JlKSAgICANCiAgYi5bQWZ0ZXJdKCNBZnRlcikgIA0KNS4gW0VtcGxveWVlIE1hdGVyaWFsc10oI0VtcGxveWVlIE1hdGVyaWFscykNCjYuIFtBY2NvdW50cyBhbmQgU29mdHdhcmVdKCNBY2NvdW50cyBhbmQgU29mdHdhcmUpDQo3LiBbTG9naW5zIGFuZCBQYXNzd29yZHNdKCNMb2dpbnMgYW5kIFBhc3N3b3JkcykNCjguIFtTY2hlZHVsZV0oI1NjaGVkdWxlKQ0KOS4gW0dyYWR1YXRlIEZlbGxvd3MgTWVldGluZ10oI0dyYWR1YXRlIEZlbGxvd3MgTWVldGluZykNCjEwLiBbRWRpdGluZyB0aGUgUUNMLUNNQyBXZWJzaXRlXSgjRWRpdGluZyB0aGUgUUNMLUNNQyBXZWJzaXRlKQ0KMTEuIFtXb3Jrc2hvcHNdKCNXb3Jrc2hvcHMpICANCiAgYS5bU3RhcnQgb2YgU2VtZXN0ZXJdKCNTdGFydCBvZiBTZW1lc3RlcikgIA0KICBiLltQb3NzaWJsZSBXb3Jrc2hvcHNdKCNQb3NzaWJsZSBXb3Jrc2hvcHMpICANCiAgYy5bQ29uZmlybWluZyBEYXRlcyB3aXRoIEluc3RydWN0b3JzXSgjQ29uZmlybWluZyBEYXRlcyB3aXRoIEluc3RydWN0b3JzKSAgDQogIGQuW1dvcmtzZmxvd10oI1dvcmtzZmxvdykgIA0KICAgICAgLSBbVHdvIHdlZWtzIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3BdKCNUd28gd2Vla3MgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcCkNCiAgICAgIC0gW09uZSB3ZWVrIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3BdKCNPbmUgd2VlayBiZWZvcmUgZGF5IG9mIHdvcmtzaG9wKQ0KICAgICAgICAtIFtNb2RlcmF0b3JdKCNNb2RlcmF0b3IpDQogICAgICAgIC0gW1pvb21dKCNab29tKQ0KICAgICAgICAtIFtMb2NhbGlzdF0oI0xvY2FsaXN0KQ0KICAgICAgLSBbVHdvIGRheXMgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcF0oI1R3byBkYXlzIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3ApDQogICAgICAtIFtEYXkgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcF0oI0RheSBiZWZvcmUgZGF5IG9mIHdvcmtzaG9wKQ0KICAgICAgICAtIFtRdWFsdHJpY3NdKCNRdWFsdHJpY3MpIA0KICAgICAgICAtIFtCaXQubHldKCNCaXQubHkpDQogICAgICAgIC0gW0ZseWVyIFdvcmQgZG9jXSgjRmx5ZXIgV29yZCBkb2MpDQogICAgICAgIC0gW0VtYWlscyh0byBiZSB3cml0dGVuKV0oI0VtYWlscyAodG8gYmUgd3JpdHRlbikpDQogICAgICAgIC0gW1JlbWluZGVyIEVtYWlsXSgjUmVtaW5kZXIgRW1haWwpDQogICAgICAgIC0gW0F0dGVuZGVlcyBFbWFpbHNdKCNBdHRlbmRlZXMgRW1haWxzKQ0KICAgICAgLSBbRGF5IG9mIHdvcmtzaG9wXSgjRGF5IG9mIHdvcmtzaG9wKQ0KICAgICAgICAtIFtNb2RlcmF0b3IgY2hlY2tsaXN0XSgjTW9kZXJhdG9yIGNoZWNrbGlzdCkNCiAgICAgIC0gW0RheSBhZnRlciB3b3Jrc2hvcF0oI0RheSBhZnRlciB3b3Jrc2hvcCkNCiAgICAgICAgLSBbUXVhbHRyaWNzXSgjUXVhbHRyaWNzKQ0KICAgICAgICAtIFtab29tIFJlY29yZGluZ3NdKCNab29tIFJlY29yZGluZ3MpDQogICAgICAgIC0gW0VuZGluZyBlbWFpbCBleGFtcGxlXSgjRW5kaW5nIGVtYWlsIGV4YW1wbGUpDQogICAgICAtIFtXb3Jrc2hvcCBJc3N1ZXNdKCNXb3Jrc2hvcCBJc3N1ZXMpDQogIGUuIFtCdXlpbmcgYSB0aWNrZXQg4oCTIE1ha2luZyBzdXJlIGl0IHdvcmtzXSgjQnV5aW5nIGEgdGlja2V0IOKAkyBNYWtpbmcgc3VyZSBpdCB3b3JrcykNCiAgZi4gW0NoYW5naW5nIFdlYnNpdGVdKCNDaGFuZ2luZyBXZWJzaXRlKQ0KICBnLiBbQ2hlY2tsaXN0IGZvciBhIFR5cGljYWwgV29ya2RheV0oI0NoZWNrbGlzdCBmb3IgYSBUeXBpY2FsIFdvcmtkYXkpDQogIGguIFtCdWlsZGluZyBhIFdvcmtzaG9wXSgjQnVpbGRpbmcgYSBXb3Jrc2hvcCkNCiAgICAgIC0gW0dpdGh1Yl0oI0dpdGh1YikNCiAgICAgIC0gW1ByZS13b3Jrc2hvcCByZXF1aXJlbWVudHMgUERGXSgjUHJlLXdvcmtzaG9wIHJlcXVpcmVtZW50cyBQREYpDQogICAgICAtIFtQcmVzZW50YXRpb24gUERGXSgjUHJlc2VudGF0aW9uIFBERikNCiAgICAgIC0gW0ZpbGVzXSgjRmlsZXMpDQogIGkuIFtXb3Jrc2hvcHMgQnVpbGRpbmddKCNXb3Jrc2hvcHMgQnVpbGRpbmcpDQogIGouIFtab29tIFJlY29yZGluZyBEb3dubG9hZHNdKCNab29tIFJlY29yZGluZyBEb3dubG9hZHMpDQogIGsuIFtRdWFsdHJpY3MgTWFrZSBhIFdvcmtmbG93XSgjUXVhbHRyaWNzIE1ha2UgYSBXb3JrZmxvdykNCiAgbC4gW0hvdyB0byBzY2hlZHVsZSBtZWV0aW5ncyBvbiBab29tXSgjSG93IHRvIHNjaGVkdWxlIG1lZXRpbmdzIG9uIFpvb20pDQoxMi4gW1FDTCBJbXBhY3QgUmVwb3J0XSgjUUNMIEltcGFjdCBSZXBvcnQpDQogIGEuIFtRdWFsdHJpY3Mg4oCTIFJlcG9ydHNdKCNRdWFsdHJpY3Mg4oCTIFJlcG9ydHMpDQogIGIuIFtMb2NhbGlzdCDigJMgUmVwb3J0c10oI0xvY2FsaXN0IOKAkyBSZXBvcnRzKQ0KICBjLiBbU3VtbWFyaWVzXSgjU3VtbWFyaWVzKQ0KICAgICAgLSBbTWlzc2luZyBEYXRhXSgjTWlzc2luZyBEYXRhKQ0KICAgICAgLSBbTG9jYWxpc3RdKCNMb2NhbGlzdCkNCiAgICAgIC0gW1F1YWx0cmljc10oI1F1YWx0cmljcykNCiAgZC4gW1JvdWdoIERyYWZ0IEltcGFjdCBSZXBvcnRdKCNSb3VnaCBEcmFmdCBJbXBhY3QgUmVwb3J0KSAgDQoNCl9fXw0KDQojIyMgMS4gV2VsY29tZSB0byB0aGUgUUNMIDxhIG5hbWU9IldlbGNvbWUgdG8gdGhlIFFDTCI+PC9hPg0KUGFyYWdyYXBoIGFib3V0IFFDTA0KDQpNaXNzaW9uIFN0YXRlbWVudA0KDQoqKiogDQoNCiMjIyAyLiBEcmVzcyBjb2RlIDxhIG5hbWU9IkRyZXNzIGNvZGUiPjwvYT4NCk9mZmljZSBDYXN1YWwNCg0KX19fDQoNCiMjIyAzLiBNYXRlcmlhbHMgbmVlZGVkICA8YSBuYW1lPSJNYXRlcmlhbHMgbmVlZGVkICI+PC9hPg0KLSBbIF0JQ29tcHV0ZXINCg0KKioqIA0KDQojIyMgNC4gTmV3IEVtcGxveWVlIFNpZ24gT24gPGEgbmFtZT0iTmV3IEVtcGxveWVlIFNpZ24gT24iPjwvYT4NCiMjIyMgYS4gQmVmb3JlIDxhIG5hbWU9IkJlZm9yZSI+PC9hPiANCi0gW1hdCVJlc3VtZSBhbmQgQ292ZXIgTGV0dGVyIGFuZCBSZWZlcmVuY2VzICAgDQotIFtYXQlJbnRlcnZpZXcgIA0KLSBbWF0JQWNjZXB0YW5jZSAgDQoNCiMjIyMgYi4gQWZ0ZXIgPGEgbmFtZT0iQWZ0ZXIiPjwvYT4NCi0gW1hdCUhSIGVtYWlsIA0KICAtIFsgXQlPcmllbnRhdGlvbiANCiAgLSBbIF0JV29ya2RheSANCiAgICAgIC0gWyBdIElUIHdpbGwgc2VuZCB5b3UgYW4gZW1haWwgDQogICAgICAtIFsgXSBodHRwczovL3d3dy5teXdvcmtkYXkuY29tL3RoZWNsYXJlbW9udGNvbGxlZ2VzL2QvaG9tZS5odG1sZCANCiAgLSBbIF0gU2lnbmVkIGRvY3VtZW50cyANCiAgLSBbIF0gU2hvdyBVLlMuIENpdGl6ZW5zaGlwL1ZJU0EgDQogIC0gWyBdIEdldCB0ZW1wb3JhcnkgcGVybWl0IGZvciBwYXJraW5nICANCiAgICAgIC0gWyBdIFBhcmsgaW4gQ01DIHBlcm1pdCBwYXJraW5nIG9yIG9uIHRoZSBzdHJlZXQgKG5vIHBlcm1pdCBuZWVkZWQpKG1hcCBvbiBwYWdlIDQpICANCi0gWyBdIFRhbGsgYWJvdXQgU2NoZWR1bGUgIA0KLSBbIF0gU2hhZG93IGEgd29ya3Nob3AgIA0KLSBbIF0gRW1wbG95ZWUgTWF0ZXJpYWxzIChOZXh0IHBhZ2UpICANCi0gWyBdIERvd25sb2FkIFNvZnR3YXJlIChOZXh0IHBhZ2UpICANCi0gWyBdIE1ha2UgQWNjb3VudHMgKE5leHQgcGFnZSkgIA0KDQpfX18NCg0KIVtDbGFyZW1vbnQgQ2FtcHVzIE1hcF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0NsYXJlbW9udF9NYXAuanBnP3Rva2VuPUdIU0FUMEFBQUFBQUJTUlRRSkFFR0s1VUVES1VQMk9VRVpDWVIyUVBJUSAiQ2xhcmVtb250IENhbXB1cyBNYXAiKQ0KDQoqKioNCg0KIyMjIDUuIEVtcGxveWVlIE1hdGVyaWFscyA8YSBuYW1lPSJFbXBsb3llZSBNYXRlcmlhbHMiPjwvYT4gDQoNCi0gWyBdCUVtcGxveWVlIElEDQogIC0gWyBdCUdvIHRvIENvbm5lY3RzIGluIFRoZSBDbGFyZW1vbnQgQ29sbGVnZXMgTGlicmFyeSBIb25ub2xkIE11ZGQgKEggb24gbWFwLCBwYWdlIDQpDQogICAgLSBbIF0JVGFrZSBwaWN0dXJlIA0KICAgIC0gWyBdCVJlY2VpdmUgSUQNCiAgLSBbIF0JR28gdG8gU3RvcnkgSG91c2UgKDE0IG9uIG1hcCwgcGFnZSA0KQ0KICAgIC0gWyBdCUdldCBhY2Nlc3MgdG8gaW5mcmFzdHJ1Y3R1cmUgKGRvb3JzKQ0KICAgIC0gWyBdCUFsc28gbmVlZCBhIEtFWSBmb3Igb2ZmaWNlIHJvb20gDQotIFsgXQlFbWFpbCBhbmQgVXNlcm5hbWUNCiAgLSBbIF0JU2V0dXAgYXBwb2ludG1lbnQgZm9yIElUIChKZWZmKQ0KICAgIC0gWyBdCUplZmZyZXkuTmdAY2xhcmVtb250bWNrZW5uYS5lZHUgKGpuZ0BjbWMuZWR1KSBvciBoZWxwQGNtYy5lZHUNCiAgLSBbIF0JT2J0YWluIGNvbXB1dGVyIGFjY2Vzcw0KICAtIFsgXQlHZXQgcHV0IGludG8gc3lzdGVtDQotIFsgXQlLcm9ub3MNCiAgLSBbIF0JU2VuZCBlbWFpbCB0byBQYXlyb2xsDQogICAgLSBbIF0JcGF5cm9sbEBjbWMuZWR1DQogIC0gWyBdCUZpbmQgS3Jvbm9zIGluIFdvcmtkYXkNCiAgLSBbIF0JTG9nIGluIGhvdXJzIA0KICAgIC0gWyBdCVRhbGsgdG8gSmFubmENCi0gWyBdCUhlYWx0aCBEb2N1bWVudHMNCiAgLSBbIF0JaHR0cHM6Ly93d3cuY21jLmVkdS9oZWFsdGhzY3JlZW4NCi0gWyBdCVRyYWluaW5nIHdpdGggRVZFUkZJDQogIC0gWyBdCUhhemFyZCBDb21tdW5pY2F0aW9uIChDQSkNCiAgLSBbIF0gUHJvdGVjdGluZyBZb3V0aA0KICAtIFsgXQlQcmV2ZW50aW5nIEhhcmFzc21lbnQgYW5kIERpc2NyaW1pbmF0aW9uOiBOb24tU3VwZXJ2aXNvcnMNCiAgLSBbIF0JSW5qdXJ5ICYgSWxsbmVzcyBQcmV2ZW50aW9uDQogIC0gWyBdCURhdGEgU2VjdXJpdHkgYW5kIFByaXZhY3kNCiAgDQpfX18NCg0KIyMjIDYuIEFjY291bnRzIGFuZCBTb2Z0d2FyZSA8YSBuYW1lPSJBY2NvdW50cyBhbmQgU29mdHdhcmUiPjwvYT4gDQoNCiogQ01DIFNlbGYtU2VydmljZSBBY2NvdW50IE1hbmFnZW1lbnQgICAgDQogICAgLSBodHRwczovL215cGFzc3dvcmQuY2xhcmVtb250bWNrZW5uYS5lZHUvc2hvd0xvZ2luLmNjICAgIA0KLQlDTUMgRW1haWwgIA0KICAgIC0gaHR0cHM6Ly9jbWMuZWR1L21haWwvb2ZmaWNlMzY1ICANCiAgICAgIC0JQ01DIGUtbWFpbCBhZGRyZXNzOiBmaXJzdG5hbWUubGFzdG5hbWVAY2xhcmVtb250bWNrZW5uYS5lZHUgIA0KICAgICAgLQlTaG9ydC1oYW5kOiBmaXJzdHRocmVlbGV0dGVyc29meW91cmZpcnN0bmFtZWFuZHdob2xlbGFzdG5hbWVAY21jLmVkdSAgIA0KLQlEYXNoYm9hcmRzIEV2ZW50cyAgDQogICAgLQlodHRwczovL2V2ZW50cy5jbWMuZWR1L25ld2VtcGxveWVldXNlcm5hbWUvaG9tZSAgDQotCUdpdEh1YiAgDQogICAgLQlodHRwczovL2dpdGh1Yi5jb20vQ01DLVFDTCAgDQotCVdvcmtkYXkgIA0KICAgIC0JaHR0cHM6Ly93d3cubXl3b3JrZGF5LmNvbS90aGVjbGFyZW1vbnRjb2xsZWdlcy9kL2hvbWUuaHRtbGQgKHJlZmVyIHRvIHBhZ2UgMykgIA0KICAgIC0JS3Jvbm9zIChpbiBoZXJlKSAgDQotCVFDTCBIb21lIHBhZ2UgIA0KICAgIC0JY21jLmVkdS9sb2dpbiAgDQogICAgLQlodHRwczovL3d3dy5jbWMuZWR1L3FjbCAgDQotCUJveCAgIA0KICAgIC0JaHR0cHM6Ly9jbGFyZW1vbnRtY2tlbm5hLmFjY291bnQuYm94LmNvbS9sb2dpbj9yZWRpcmVjdF91cmw9JTJGZm9sZGVyJTJGMCAgDQotCUJpdC5seSAgDQogICAgLQlObyBhY2NvdW50ICh5b3Ugd2lsbCB1c2UgaXQgYSBsb3QpICANCiAgICAtCWh0dHBzOi8vYml0bHkuY29tLyAgDQotCVF1YWx0cmljcyAgDQogICAgLQlodHRwczovL3FmcmVlYWNjb3VudHNzamMxLmF6MS5xdWFsdHJpY3MuY29tL2xvZ2luP3BhdGg9JTJGUSUyRk15UHJvamVjdHNTZWN0aW9uJnByb2R1Y3Q9cHJvamVjdC1zdG9yZS1wcm94eSAgDQotCUxvY2FsaXN0ICANCiAgICAtCWh0dHBzOi8vZXZlbnRzLmNtYy5lZHUvYWRtaW4gIA0KLQlab29tICANCiAgICAtCWh0dHBzOi8vY21jLWl0cy56b29tLnVzICANCi0JVGVhbXMgIA0KICAgIC0JTWFrZSBzdXJlIHRvIGRvd25sb2FkIGRlc2t0b3AgdmVyc2lvbiBhbmQgbW9iaWxlIGFzIHdlbGwgIA0KICAgIC0JaHR0cHM6Ly90ZWFtcy5taWNyb3NvZnQuY29tICANCi0gSW5zdGFncmFtICANCiAgICAtIGh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vY21jLnFjbC8gIA0KDQpfSXNzdWVzOiBjb250YWN0IGFub3RoZXIgR3JhZHVhdGUgRmVsbG93IG9yIElUIChoZWxwQGNtYy5lZHUpXyAgDQoNCioqKg0KDQojIyMgNy4gTG9naW5zIGFuZCBQYXNzd29yZHMgPGEgbmFtZT0iTG9naW5zIGFuZCBQYXNzd29yZHMiPjwvYT4NCg0KfEFjY291bnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgfFVzZXJuYW1lIHxQYXNzd29yZCB8DQp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS06fC0tLS0tLS0tOnwNCnxDTUMgU2VsZi1TZXJ2aWNlIEFjY291bnQgTWFuYWdlbWVudHwgICAgICAgICB8ICAgICAgICAgfA0KfENNQyBFbWFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8DQp8RGFzaGJvYXJkcyBFdmVudHMgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwNCnxHaXRIdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfA0KfFdvcmtkYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8DQp8UUNMIEhvbWUgcGFnZSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwNCnxCb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfA0KfEJpdC5seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8DQp8UXVhbHRyaWNzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwNCnxMb2NhbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfA0KfFpvb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8DQp8VGVhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwNCnxJbnN0YWdyYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfA0KX0ZpcmVmb3g6IGJvb2ttYXJrIHdlYnNpdGVzXw0KDQpfX18NCg0KIyMjIDguIFNjaGVkdWxlIDxhIG5hbWU9IlNjaGVkdWxlIj48L2E+DQoNCl9fSW1wb3J0YW50IERhdGVzX18gIA0KDQoqIFRlYW0gbWVldGluZ3MgIA0KICAgIC0JQml3ZWVrbHk6IFdlZG5lc2RheXMgMTBhbSAtMTFhbSAgDQotCUdyYWR1YXRlIEZlbGxvdyBtZWV0aW5ncyAgDQogICAgLQlUYWxrIHRvIERyLiBQYXJrIHRvIHNldCB1cCBiZXN0IHRpbWUgIA0KICAgIC0JQ3VycmVudCBGZWxsb3cgbWVldGluZzogOTozMGFtLTEwYW0gIA0KICAgIC0JTmV3IFRpbWU6IF9fX19fX19fX19fX19fX19fX19fX19fICANCi0JV29ya3Nob3BzICAgDQogICAgLQlXZWRuZXNkYXlzIDNwbS01cG0gb3IgNHBtLTZwbSAgDQogICAgLQlGcmlkYXlzIDlhbS0xMWFtIG9yIDEwYW0tMTJwbSAgDQotCVN0YWZmIGRheXMNCiAgICAtCUphbm5hIHdpbGwgc2VuZCBvdXQgZW1haWwgICAgDQotIEVtcGxveWVlcyBTY2hlZHVsZSAoMjAgaG91cnMgYSB3ZWVrKSAgDQogICAgLQlUYWxrIHRvIERyLiBQYXJrICAgDQoNCg0KfE1vbmRheQl8VHVlc2RheSAgfFdlZG5lc2RheSB8VGh1cnNkYXkgfEZyaWRheSB8DQp8Oi0tLS0tLXw6LS0tLS0tLTp8Oi0tLS0tLS0tOnw6LS0tLS0tLTp8LS0tLS0tOnwNCnxXb3Jrc2hvcDogNXBtIOKAkyA3cG18Q3VycmVudCBGZWxsb3cgbWVldGluZzogOTozMGFtLTEwYW18Qml3ZWVrbHkgVGVhbSBtZWV0aW5nOiAxMGFtIC0xMWFtfCAgICAgICAgfFdvcmtzaG9wOiAxMGFtLTEycG18DQoNCl9EYXlzIG9mZjogSG9saWRheXMgYW5kIEFjYWRlbWljIGJyZWFrXw0KDQoqKioNCg0KIyMjIDkuIEdyYWR1YXRlIEZlbGxvd3MgTWVldGluZyA8YSBuYW1lPSJHcmFkdWF0ZSBGZWxsb3dzIE1lZXRpbmciPjwvYT4NCg0KKiBCT1ggIA0KICAgIC0JVGl0bGVkOiBRQ0wgRmVsbG93cyBNZWV0aW5nIEFnZW5kYSAgDQogICAgLQlodHRwczovL2NsYXJlbW9udG1ja2VubmEuYXBwLmJveC5jb20vZm9sZGVyLzAgIA0KICAgIA0KIVtRQ0wgRmVsbG93cyBNZWV0aW5nIEFnZW5kYV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1BpY3R1cmUyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFUURLNTRFUE9OVU1NR0tTVVlSMlRYQ1EpDQoNCi0JQWdlbmRhICANCiAgICAtCVdyaXRlIG1lZXRpbmcgbm90ZXMgIA0KICAgICAgICAtIEJlZm9yZSBtZWV0aW5nICANCiAgICAgICAgICAtIExldCBEci4gUGFyayB3cml0ZSBtaW51dGVzIHVubGVzcyBoZSBhc2tzIHlvdSAgDQogICAgLQlGb2xsb3cgYWxvbmcgaW4gdGhlIG1lZXRpbmcgIA0KICAgIC0JVE8gRE9zICANCiAgICAgICAgLQlZb3VyIGFzc2lnbm1lbnRzIGZvciB0aGUgd2VlayAgDQoNCiFbWW91ciBhc3NpZ25tZW50cyBmb3IgdGhlIHdlZWtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9QaWN0dXJlMy5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRVZFRENKQ1VYNjNFQ0ZOQkNZUjJUWUtRKQ0KDQpfX18NCg0KIyMjIDEwLiBFZGl0aW5nIHRoZSBRQ0wtQ01DIFdlYnNpdGUgPGEgbmFtZT0iRWRpdGluZyB0aGUgUUNMLUNNQyBXZWJzaXRlIj48L2E+DQoNCkV2ZXJ5IHdlZWssIHdlIHVwZGF0ZSBjbWMuZWR1L3FjbC9xY2wtd29ya3Nob3AgcGFnZSwgd2hlbmV2ZXIgd2Ugb3BlbiBvciBjbG9zZSByZWdpc3RyYXRpb24gKyB1cGRhdGUgb3VyIHNjaGVkdWxlDQoNCkluIHRlcm1zIG9mIHdlYnNpdGUgYWNjZXNzOg0KDQogIDEuIExvZyBpbiBhdCBjbWMuZWR1L2xvZ2luDQogIDIuIEdvIHRvIGNtYy5lZHUvcWNsDQogIDMuIFNlZSDigJxWaWV3LOKAnSDigJxFZGl0LOKAnSBhbmQg4oCcUmV2aXNpb25z4oCdIHRhYnMgcmlnaHQgYWJvdmUgYm9keQ0KDQohW3dlYnNpdGUgYWNjZXNzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUGljdHVyZTQucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0Y0QUpUMkRMV05UTU8yVk9LWVIyVFpVUSkNCg0KKioqDQoNCiMjIyAxMS4gV29ya3Nob3BzIDxhIG5hbWU9IldvcmtzaG9wcyI+PC9hPg0KDQojIyMjIGEuIFN0YXJ0IG9mIFNlbWVzdGVyIDxhIG5hbWU9IlN0YXJ0IG9mIFNlbWVzdGVyIj48L2E+DQoNCioJVG9waWNzDQogICAgLQlQaWNrDQogICAgLQlEci4gUGFyayBpbiBGZWxsb3dzIG1lZXRpbmcNCi0JRGF0ZXMNCiAgICAtCUFzc2lnbg0KICAgIC0JRHIuIFBhcmsgaW4gRmVsbG93cyBtZWV0aW5nDQotCUluc3RydWN0b3JzIA0KICAgIC0JQXNzaWduDQogICAgLQlEci4gUGFyayBpbiBGZWxsb3dzIG1lZXRpbmcNCg0KIyMjIyBiLiBQb3NzaWJsZSBXb3Jrc2hvcHMgPGEgbmFtZT0iUG9zc2libGUgV29ya3Nob3BzIj48L2E+DQoNCioJRHIuIFBhcmsNCiAgICAtCVIgUHJvZ3JhbW1pbmcgQmFzaWNzICAobGV2ZWwgMSkgICANCiAgICAtCURhdGEgV3JhbmdsaW5nIHdpdGggUiAobGV2ZWwgMikNCiAgICAtCVRhYmxlYXUgIChsZXZlbCAxKSAgIA0KLQlCaGF2ZW4NCiAgICAtCUdldCBFcXVpcHBlZCB3aXRoIExhVGVYICAobGV2ZWwgMSkgICAgICAgICAgICAgICANCiAgICAtCUdldCBFcXVpcHBlZCB3aXRoIE1BVExBQiAgKGxldmVsIDEpICAgICAgDQotCVZhbmVzc2ENCiAgICAtCUV4Y2VsIChsZXZlbCAxKSAgICANCiAgICAtCVNRTCAobGV2ZWwgMSkgICAoRmluZCBjbG91ZCBiYXNlZCBjb21wbGllciB0aGF0IGltcG9ydHMgZmlsZXMgbGlrZSBjc3YgYW5kIHNxbCkNCiAgICAtCUdJUyAobGV2ZWwgMSkgKEFyY0dJUyBPbmxpbmUgZm9yIE1hYyBhbmQgV2luZG93cykNCi0JU2FtIEtpbSANCiAgICAtCVNUQVRBICAobGV2ZWwgMSkNCiAgICAtCVNUQVRBIChsZXZlbCAyKSAtLSBkZXZlbG9wIHdpdGggU2FtIExlZQ0KLQlPdGhlcnMgKG5lZWQgaW5zdHJ1Y3RvcnMpDQogICAgLQlKdWxpYSA9IEFsZm9uc28gTGFuZGVyb3MgYWxhbmRlcm9zQHVjbGEuZWR1DQogICAgLQlYU0VERQ0KICAgIC0JQmFzaCA9IEJyYWQgTWNDYXVsZXkgYm1jY2F1bGV5QGhtYy5lZHUNCiAgICAtCVVuaXggU2hlbGwgYW5kIEdpdCA9IEplYW5pbmUgRmlubiBqZWFuaW5lLmZpbm5AY2xhcmVtb250LmVkdQ0KICAgIC0JTVMgUG93ZXIgQXV0b21hdGUgYXMgUHJlIHRvIFBvd2VyIEJJID0gQ2luZHkgQ2hlbmcgY2luZHkuY2hlbmdAY2d1LmVkdQ0KICAgIC0JTVMgUG93ZXIgUXVlcnkgYXMgUHJlIHRvIFBvd2VyIEJJID0gQ2luZHkgQ2hlbmcgY2luZHkuY2hlbmdAY2d1LmVkdQ0KICAgIC0JQWx0ZXJ5eCA9IEJyYW5kb24gQmFrIGJyYW5kb25iYWtAZ21haWwuY29tIA0KICAgIC0JTWFjaGluZSBMZWFybmluZyA9IEFhc2hpdGEgS2VzYXJ3YW5pIGFrZXNhcndhbmlAaG1jLmVkdSANCiAgICAtCVB5dGhvbiANCiAgICAtIFBvd2VyIEJJID0gSmlsbGlhbiBTZXltb3VyIA0KICAgIA0KIyMjIyBjLiBDb25maXJtaW5nIERhdGVzIHdpdGggSW5zdHJ1Y3RvcnMgPGEgbmFtZT0iQ29uZmlybWluZyBEYXRlcyB3aXRoIEluc3RydWN0b3JzIj48L2E+DQoNClN1YmplY3Q6IFFDTCBXb3Jrc2hvcHMgLSBjb25maXJtaW5nIGRhdGVzDQoNCkdvb2QgYWZ0ZXJub29uIEJoYXZlbiwgIA0KDQpIYXBweSBUdWVzZGF5ISBJIGhvcGUgeW91IGFyZSBkb2luZyB3ZWxsISBBcyB0aGUgbmV3IHNlbWVzdGVyIGFwcHJvYWNoZXMsIEkgd2FudGVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgZGF0ZXMgd29yayBmb3IgeW91IHRvIGluc3RydWN0OiAgDQoNCk1vbmRheSwgSmFudWFyeSAyNCwgMjAyMiwgYXQgNXBtIC0gN3BtIGZvciBHZXQgRXF1aXBwZWQgd2l0aCBMYVRlWCBhcyBhbiBvbmxpbmUgd29ya3Nob3AgIA0KDQpNb25kYXksIEZlYnJ1YXJ5IDIxLCAyMDIyLCBhdCA1cG0gLSA3cG0gZm9yIEdldCBFcXVpcHBlZCB3aXRoIE1BVExBQiAoVEJBIGFzIGEgaHlicmlkLCBpbi1wZXJzb24sIG9yIG9ubGluZSB3b3Jrc2hvcCBkdWUgdG8gdGhlIENvdmlkIHBvbGljaWVzKSAgICANCg0KV2UgaGF2ZSBvbmx5IHNjaGVkdWxlZCB1cCB0byBTcHJpbmcgQnJlYWssIEkgd2lsbCBoYXZlIHRvIGZvbGxvdyB1cCBpbiB0aGUgZnV0dXJlIGZvciB0aGUgcmVzdCBvZiB0aGUgc2VtZXN0ZXIncyBkYXRlcy4gRG8gdGhlc2UgZGF0ZXMgYW5kIHRpbWUgd29yayBmb3IgeW91IHRvIGluc3RydWN0IHRoZSB3b3Jrc2hvcHM/DQoNClRoYW5rIHlvdSwgICANClZhbmVzc2EgQXJpYXMgQ2FzaWxsYXMgIA0KR3JhZHVhdGUgRmVsbG93IC0gTXVydHkgU3VuYWsgUXVhbnRpdGF0aXZlIGFuZCBDb21wdXRpbmcgTGFiIChRQ0wpICANCkNsYXJlbW9udCBNY2tlbm5hIENvbGxlZ2UgIA0KdmFuZXNzYS5jYXNpbGxhc0BjbGFyZW1vbnRtY2tlbm5hLmVkdSAgDQoNCl9fXw0KDQojIyMjIGQuIFdvcmtzZmxvdyA8YSBuYW1lPSJXb3Jrc2Zsb3ciPjwvYT4NCg0KIyMjIyBUd28gd2Vla3MgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcCAgPGEgbmFtZT0iVHdvIHdlZWtzIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3AiPjwvYT4NCg0KKglDb250YWN0IEluc3RydWN0b3IgIA0KLSBTZXR1cCBtZWV0aW5nDQogICAgLSBBZ2VuZGEgb2YgbWVldGluZw0KICAgIC0gU3VtbWFyeSBvZiBsb2NhbGlzdA0KICAgIC0gU29mdHdhcmUNCiAgICAtIFdlYnNpdGVzDQogICAgLSBMaWNlbnNlcw0KICAgICAgICANCl9fX0luc3RydWN0b3JzIE5vdGVzIHR1cm5lZCBpbnRvIFN1bW1hcmllc19fXw0KDQpHb29kIGFmdGVybm9vbiBbaW5zdHJ1Y3RvcuKAmXMgbmFtZV0sICANCg0KSGFwcHkgVHVlc2RheSEgSSBhbSBsb29raW5nIGZvcndhcmQgdG8geW91ciBkcnlydW4gb2YgW3dvcmtzaG9wXSEgSSBhbSBzdGFydGluZyB0byBjcmVhdGUgdGhlIHJlZ2lzdHJhdGlvbiBwYWdlIGZvciB0aGUgd29ya3Nob3AgYW5kIHdvdWxkIGxpa2UgdG8gZ2V0IGEgYml0IG9mIGluZm9ybWF0aW9uIGZyb20geW91IGFib3V0IHRoZSB3b3Jrc2hvcC4gICANCg0KRmlyc3QsIGRvIHlvdSBoYXZlIGEgc3VtbWFyeSBwYWdlIGZvciB5b3VyIHdvcmtzaG9wPyBJIGhhdmUgYW4gZXhhbXBsZSBvZiBTYW0gTGVlJ3MgYmVsb3c6ICAgDQoNCiFbZXhhbXBsZSBvZiBTYW0gTGVlJ3NdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9QaWN0dXJlNS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUhRR0VYTUZMQURRN042S1VZUjJUMzJBKQ0KDQpTZWNvbmQsIGRvIHlvdSBoYXZlIGFueSBwcmUtd29ya3Nob3AgcmVxdWlyZW1lbnRzIHRoYXQgdGhlIGF0dGVuZGVlcyBuZWVkIHRvIGRvIGJlZm9yZSB0aGUgd29ya3Nob3A/IExpa2UgZG93bmxvYWQgcHJvZ3JhbXMgb3Igc2lnbiB1cCBmb3IgYSBsaWNlbnNlLiAgICANClRoaXJkLCB3aGF0IHRpbWUgZGlkIHlvdSB3YW50IHRvIGRvIHlvdXIgd29ya3Nob3AgYXQgM3BtLTVwbSBvciA0cG0tNnBtPyAgDQpGb3VydGgsIHdvdWxkIHlvdSBsaWtlIHRoaXMgd29ya3Nob3AgdG8gYmUgYSBoeWJyaWQsIG9ubGluZSBvbmx5IG9yIGluLXBlcnNvbiBvbmx5PyAgDQpMYXN0bHksIGlzIHRoZXJlIGFueSBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSBtZSB0byBsZXQgdGhlIGF0dGVuZGVlcyBrbm93IGFib3V0IGJlZm9yZSB3YWxraW5nIGludG8gdGhlIHdvcmtzaG9wPyBsaWtlIHdlYnNpdGUgd2hlcmUgdG8gZG93bmxvYWQgZmlsZXMgb3IgYSBub3RlIGFib3V0IHRoZSBkYXRhLiAgDQpUaGFuayB5b3UgZm9yIHRoaXMgaW5mb3JtYXRpb24sIGl0IHdpbGwgaGVscCBtZSBpbiBnZXR0aW5nIHRoZSB3b3Jrc2hvcCdzIHJlZ2lzdHJhdGlvbiByZWFkeS4gIA0KDQpUaGFuayB5b3UsICANCkdyYWR1YXRlIEZlbGxvdyAtIE11cnR5IFN1bmFrIFF1YW50aXRhdGl2ZSBhbmQgQ29tcHV0aW5nIExhYiAoUUNMKSAgDQoNCl9fX1tRQ0wgV29ya3Nob3BdIFRpdGxlX19fICAgIA0KDQpBYm91dCB0aGlzIEV2ZW50ICANClRpdGxlICANClN1bW1hcnkgIA0KQWdlbmRhOiAgIA0KTGVhcm5pbmcgT2JqZWN0aXZlczogKFlvdSB3aWxsIGxlYXJuIGhvdyB0bykgICANClByZXJlcXVpc2l0ZTogICAgDQpMb2NhdGlvbjogICAgDQpQYXJ0aWNpcGFudHM6ICAgDQoNCl9fX0V4YW1wbGUgSW5zdHJ1Y3RvcnMgTm90ZXMgdHVybmVkIGludG8gU3VtbWFyaWVzX19fICAgDQoNCl9bUUNMIFdvcmtzaG9wXSBSIFByb2dyYW1taW5nIEJhc2ljcyAoTGV2ZWwgMSDigJMgQ29kaW5nKV8NCg0KQWJvdXQgdGhpcyBFdmVudA0KDQpSIFByb2dyYW1taW5nIEJhc2ljcyAoTGV2ZWwgMSAtIENvZGluZykNCiANClN1bW1hcnk6ICANClIgaXMgYW4gb3Blbi1zb3VyY2Ugc3RhdGlzdGljYWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIFIgaXMgd2lkZWx5IHVzZWQgaW4gaW5kdXN0cnkgYXMgd2VsbCBhcyBpbiBhY2FkZW1pYSBmb3Igc3RhdGlzdGljYWwgYW5hbHlzaXMgYW5kIGRhdGEgdmlzdWFsaXphdGlvbi4gSW4gdGhpcyB3b3Jrc2hvcCwgd2UgaW50cm9kdWNlIHRoZSBiYXNpY3Mgb2YgdGhlIFIgbGFuZ3VhZ2UgYW5kIGl0cyBwcm9ncmFtbWluZyBlbnZpcm9ubWVudCB0aHJvdWdoIHNpbXBsZSBoYW5kcy1vbiBleGFtcGxlcy4NClRoaXMgd29ya3Nob3AgaXMgZGVzaWduZWQgZm9yIGJlZ2lubmVycyBpbiBSIHByb2dyYW1taW5nLCBzbyBubyBwcmlvciBrbm93bGVkZ2Ugb2YgUiBwcm9ncmFtbWluZyBpcyBuZWVkZWQuIEhvd2V2ZXIsIGdlbmVyYWwgcHJvZ3JhbW1pbmcga25vd2xlZGdlIGluIGFueSBwcm9ncmFtbWluZyBsYW5ndWFnZSB3aWxsIGJlIGhlbHAgdW5kZXJzdGFuZCB0aGUgcHJvZ3JhbW1pbmcgY29uY2VwdHMuDQpXZSB3aWxsIGJlIHVzaW5nIFJTdHVkaW8gQ2xvdWQgZm9yIGhhbmRzLW9uLiBQbGVhc2UgY3JlYXRlIGEgZnJlZSBhY2NvdW50IGF0IGh0dHBzOi8vcnN0dWRpby5jbG91ZCBiZWZvcmUgam9pbiB0aGUgd29ya3Nob3AuDQoNCkFnZW5kYTogIA0K4oCiCUJhc2ljcyBvZiBSIGFuZCBSU3R1ZGlvDQrigKIJUiBQcm9ncmFtbWluZyBFbnZpcm9ubWVudDogV29ya3NwYWNlLCBXb3JraW5nIERpcmVjdG9yeSwgUGFja2FnZQ0K4oCiCVIgb2JqZWN0cyAoZGF0YSBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9uKQ0K4oCiCVIgcGFja2FnZXMgZm9yIGRhdGEgaW1wb3J0IGFuZCBleHBvcnQNCuKAoglSIGdyYXBoaWNzIGZvciBzaW1wbGUgcGxvdHRpbmcgbWV0aG9kcw0K4oCiCUJhc2ljIHN0YXRpc3RpY2FsIGFuYWx5c2lzIHVzaW5nIFINCg0KTG9jYXRpb246ICANCkh5YnJpZCAoSW4tcGVyc29uOiBRQ0wgQ2xhc3Nyb29tLCBPbmxpbmU6IFpvb20gaW5mb3JtYXRpb24gd2lsbCBiZSBwcm92aWRlZCB0byB0aGUgYXR0ZW5kZWVzIGFmdGVyIHJlZ2lzdHJhdGlvbikNCkNsaWNrIGhlcmUgdG8gZmluZCB5b3VyIHdheSB0byB0aGUgUUNMLg0KDQpQYXJ0aWNpcGFudHM6ICANCkNNQyBTdHVkZW50cywgRmFjdWx0eSwgYW5kIFN0YWZmICAgDQpfX18NCg0KX0RhdGEgV3JhbmdsaW5nIHdpdGggUiAoTGV2ZWwgMiAtIERhdGEpXw0KDQpTdW1tYXJ5OiAgDQpEYXRhIHdyYW5nbGluZyBpcyB0aGUgcHJvY2VzcyBvZiBvYnRhaW5pbmcsIGNsZWFuaW5nLCByZXNoYXBpbmcsIGFuZCB0cmFuc2Zvcm1pbmcgcmF3IChhbmQgbWVzc3kpIGRhdGEgaW50byBhIHVzZWFibGUgZm9ybSBvZiBwcm9jZXNzZWQgKGFuZCB0aWR5KSBkYXRhLiBJdCBpcyBrbm93biB0aGF0IGEgbWFqb3JpdHkgb2YgZGF0YSBhbmFseXN0cyBhbmQgZGF0YSBzY2llbnRpc3RzIHNwZW5kIGFzIG11Y2ggYXMgODAlIG9mIHRoZWlyIHRpbWUgb24gZGF0YSB3cmFuZ2xpbmcuIFNvIGl0J3MgZXNzZW50aWFsIHRvIGdldCBmYW1pbGlhciB3aXRoIGdvb2QgZGF0YSB3cmFuZ2xpbmcgdG9vbHMgdGhhdCBoZWxwIHlvdSBzYXZlIHRpbWUgYW5kIGF2b2lkIGVycm9ycy4gSW4gdGhpcyBoYW5kcy1vbiB3b3Jrc2hvcCwgeW91IHdpbGwgbGVhcm4gYmFzaWMgc2tpbGxzIHRvIGltcG9ydCwgZXhwb3J0LCBjbGVhbiwgcmVzaGFwZSwgdHJhbnNmb3JtLCBhbmQgdmlzdWFsaXplIGRhdGEgdXNpbmcgd2VsbC1rbm93biBkYXRhIHNjaWVuY2UgcGFja2FnZSBjYWxsZWQgdGlkeXZlcnNlLg0KDQpMZWFybmluZyBPYmplY3RpdmVzOiAoWW91IHdpbGwgbGVhcm4gaG93IHRvKSAgDQpJbXBvcnQgYW5kIGV4cG9ydCBkYXRhDQpDbGVhbiwgcmVzaGFwZSBhbmQgdHJhbnNmb3JtIGRhdGENCk1ha2UgbWVzc3kgZGF0YSBpbnRvIHRpZHkgZGF0YQ0KVmlzdWFsaXplIHRpZHkgZGF0YSB1c2luZyBnZ3Bsb3QyIChpZiB0aW1lIHBlcm1pdHMpDQoNClByZXJlcXVpc2l0ZXM6ICANCkJhc2ljIGtub3dsZWRnZSBvZiBSIGFuZCBSU3R1ZGlvIChlLmcuLCBSIFByb2dyYW1taW5nIGZvciBCZWdpbm5lcnMgLSBMZXZlbCAxKQ0KUlN0dWRpbyBDbG91ZCBhY2NvdW50OyBpZiB5b3UgZG9uJ3QgaGF2ZSBvbmUgeWV0LCBwbGVhc2UgY3JlYXRlIGEgbmV3IGFjY291bnQgZnJvbSBodHRwczovL3JzdHVkaW8uY2xvdWQgc2l0ZS4NClRpZHl2ZXJzZSBwYWNrYWdlOyBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSB0aWR5dmVyc2UgcGFja2FnZSBpbiB5b3VyIFIgZW52aXJvbm1lbnQuIFNlZSBodHRwczovL3d3dy50aWR5dmVyc2Uub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KDQpMb2NhdGlvbjogIA0KSHlicmlkIChJbi1wZXJzb246IFFDTCBDbGFzc3Jvb20sIE9ubGluZTogWm9vbSBpbmZvcm1hdGlvbiB3aWxsIGJlIHByb3ZpZGVkIHRvIHRoZSBhdHRlbmRlZXMgYWZ0ZXIgcmVnaXN0cmF0aW9uKQ0KQ2xpY2sgaGVyZSB0byBmaW5kIHlvdXIgd2F5IHRvIHRoZSBRQ0wuDQoNClBhcnRpY2lwYW50czogIA0KQ01DIFN0dWRlbnRzLCBGYWN1bHR5LCBhbmQgU3RhZmYgICANCl9fXw0KDQpfR0lTIC0gUGFydCAyIChMZXZlbCAxIC0gRGF0YSkgV29ya3Nob3BfDQoNCkFib3V0IHRoaXMgRXZlbnQNCg0KU3VtbWFyeTogIA0KVGhpcyB3b3Jrc2hvcCB3aWxsIGludHJvZHVjZSB5b3UgdG8gdGhlIGV2ZXItZXhwYW5kaW5nIGFuZCBmYXNjaW5hdGluZyB3b3JsZCBvZiBnZW9ncmFwaGljIGluZm9ybWF0aW9uIHN5c3RlbXMgKEdJUykuIEluIHRocmVlIDItaG91ciBzZXNzaW9ucyB5b3Ugd2lsbCBsZWFybiBhYm91dCB3aGF0IEdJUyBpcywgaG93IGl0IGlzIHVzZWQgaW4gYSBtdWx0aXR1ZGUgb2YgaW5kdXN0cmllcyBhbmQgZmllbGRzLCBhbmQgaG93IHRvIGdldCBzdGFydGVkIHVzaW5nIEdJUyBzb2Z0d2FyZS4gV2Ugd2lsbCBleGFtaW5lIEdJUyBjb25jZXB0cyBhbmQgc29mdHdhcmUgdG9vbHMgdXNlZCB0byB2aXN1YWxpemUgcmVhbC13b3JsZCBmZWF0dXJlcywgZGlzY292ZXIgcGF0dGVybnMsIGFuZCBjb21tdW5pY2F0ZSBpbmZvcm1hdGlvbi4gUHJpbWFyaWx5IHVzaW5nIEFyY0dJUyBPbmxpbmUgKGlmIHlvdSBjYW4gaHlwZXJsaW5rOiBodHRwczovL2RvYy5hcmNnaXMuY29tL2VuL2FyY2dpcy1vbmxpbmUvZ2V0LXN0YXJ0ZWQvd2hhdC1pcy1hZ29sLmh0bSkgeW91IHdpbGwgd29yayB3aXRoIEdJUyBtYXBzLCBleHBsb3JlIGRhdGEsIGFuZCBhbmFseXplIG1hcHMgYW5kIGRhdGEgYXMgeW91IGxlYXJuIGZ1bmRhbWVudGFsIGNvbmNlcHRzIHRoYXQgdW5kZXJsaWUgR0lTIHRlY2hub2xvZ3kuDQpUaHJvdWdoIGEgc2VyaWVzIG9mIHByZXNlbnRhdGlvbnMsIGluLWNsYXNzIHR1dG9yaWFscywgYW5kIGhvbWV3b3JrIGFzc2lnbm1lbnRzIHRoaXMgd29ya3Nob3Agd2lsbCBnaXZlIHlvdSBhIHN0cm9uZyBiZWdpbm5pbmcgZm91bmRhdGlvbiBvbiBob3cgdG8gbWFrZSBtYXBzIGFuZCBleHBsb3JlIHNwYXRpYWwgZGF0YSB0byBpZGVudGlmeSBwYXR0ZXJucyBhbmQgaW5zaWdodHMgaW4geW91ciBkYXRhIHlvdSBuZXZlciBrbmV3IHBvc3NpYmxlLiBZb3Ugd2lsbCBjb21lIGF3YXkgZnJvbSB0aGlzIHdvcmtzaG9wIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgeW91IG5lZWQgdG8gc3RhcnQgd29ya2luZyB3aXRoIEdJUyBhbmQgdXRpbGl6ZSBpdCBpbiB5b3VyIG93biB3b3JrIGFuZCBleHBsb3JhdGlvbnMuIFlvdSBkbyBub3QgbmVlZCBhbnkgcHJldmlvdXMgZXhwZXJpZW5jZSDigJMganVzdCB5b3VyIG93biBjdXJpb3NpdHkhIA0KU3R1ZGVudHMgaW4gdGhpcyB3b3Jrc2hvcCAoaW4gZmFjdCwgYWxsIENsYXJlbW9udCBDb2xsZWdlcyBzdHVkZW50cykgaGF2ZSBmcmVlIGFjY2VzcyB0byBhIHdpZGUgdmFyaWV0eSBFc3JpIEdJUyBwcm9kdWN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGNoZWNrIG91dCB0aGUgQ2xhcmVtb250IENvbGxlZ2VzIExpYnJhcnkgR2VvZ3JhcGhpYyBJbmZvcm1hdGlvbiBTeXN0ZW0gKEdJUykgU2VydmljZXMgaG9tZSBwYWdlLCBodHRwczovL2xpYnJhcnkuY2xhcmVtb250LmVkdS9naXMvIA0KDQpMZWFybmluZyBPYmplY3RpdmVzOiAoWW91IHdpbGwgbGVhcm4gaG93IHRvKSAgDQpUb3BpY3Mgd2lsbCBpbmNsdWRlOiANCuKAoglJbnRyb2R1Y3Rpb24gdG8gdGhlIEdJUyBQbGF0Zm9ybSANCuKAoglUaGVvcmV0aWNhbCBiYXNpcyBvZiBHSVMgYW5kIHRoZSBHZW9ncmFwaGljIEFwcHJvYWNoIA0K4oCiCVdoYXQgY2FuIHlvdSBkbyB3aXRoIEdJUz8gDQrigKIJVW5kZXJzdGFuZGluZyBHSVMgZGF0YSANCuKAoglBbiBpbnRyb2R1Y3Rpb24gdG8gQ29vcmRpbmF0ZSBzeXN0ZW1zIGFuZCBQcm9qZWN0aW9ucyANCuKAoglBY3F1aXJpbmcgYW5kIHNlbGVjdGluZyBHSVMgRGF0YSANCuKAoglVdGlsaXppbmcgYW5kIHByZXBhcmluZyB5b3VyIG93biBkYXRhIGZvciBHSVMgDQrigKIJQ3JlYXRpbmcgbWFwcyDigJMgYmFzaWMgY2FydG9ncmFwaHksIHN5bWJvbG9neSANCuKAoglUaGUgVVMgQ2Vuc3VzIGFuZCBHSVMgDQrigKIJSW50cm9kdWN0b3J5IFNwYXRpYWwgQW5hbHlzaXMgDQrigKIJU2hhcmluZyByZXN1bHRzIOKAkyBwaHlzaWNhbCBtYXBzIGFuZCB0aGUgd29ybGQgb25saW5lIG1hcHMgDQoNCkxvY2F0aW9uOiAgDQpUaGUgZm9sbG93aW5nIGV2ZW50IHdpbGwgYmUgY29uZHVjdGVkIGluIGEgaHlicmlkIGZvcm1hdDoNCuKAoglWaXJ0dWFsOiBab29tDQrigKIJSW4tUGVyc29uOiBRQ0wgQ2xhc3Nyb29tDQoNClBhcnRpY2lwYW50czogIA0KN0MgU3R1ZGVudHMsIEZhY3VsdHkgYW5kIFN0YWZmICANCl9fXw0KDQojIyMjIE9uZSB3ZWVrIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3AgIDxhIG5hbWU9Ik9uZSB3ZWVrIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3AiPjwvYT4NCg0KX19Nb2RlcmF0b3JfXyA8YSBuYW1lPSJNb2RlcmF0b3IiPjwvYT4NCg0KKiBJZiB5b3UgYXJlIGluc3RydWN0aW5nIA0KICAgIC0gQXNrIGZvciB3aG9ldmVyIG1vZGVyYXRvciBhIHdlZWsgYmVmb3JlIG9yIGluc3RydWN0IGFuZCBtb2RlcmF0ZSB5b3Vyc2VsZi4NCg0KX19ab29tX18gPGEgbmFtZT0iWm9vbSI+PC9hPg0KDQpTdGVwIDE6IA0KDQoqIEdvIHRvIG1lZXRpbmdzICAgICAgDQohW0dvIHRvIG1lZXRpbmdzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUGljdHVyZTYucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0U2TVNKMkYzQkZXQkhUTEs2WVIyVTI3USkgIA0KDQpTdGVwIDI6IA0KDQoqIENsaWNrIG9uIFNjaGVkdWxlICAgICAgDQohW0NsaWNrIG9uIFNjaGVkdWxlXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUGljdHVyZTcucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VYRUo3WTVXUEYzT0pXU1NZWVIyVTZDUSkNCg0KU3RlcCAzOiANCg0KKiBHbyB0byBRQ0wgd29ya3Nob3AgIA0KIVtHbyB0byBRQ0wgd29ya3Nob3BdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9QaWN0dXJlOC5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRlhXM1pFUkFGM1ZSUEsyVFNZUjJVNkRRKQ0KDQpTdGVwIDQ6IA0KDQoqIExvb2sgZm9yIHdvcmtzaG9wIHlvdSBhcmUgd29ya2luZyAgICAgIA0KIVtMb29rIGZvciB3b3Jrc2hvcCB5b3UgYXJlIHdvcmtpbmddKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9QaWN0dXJlOS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRVVFV0dZRFdZVUtSU1E0Mk9ZUjJVNkVBKQ0KDQpTdGVwIDU6IA0KDQoqIEZpbGwgaW4gbWVldGluZyBpbmZvcm1hdGlvbiBvbiBab29tIHRoZW4gY2xpY2sgc2F2ZSwgICANCiAgICAtIERlc2NyaXB0aW9uIChPcHRpb25hbCkgY29tZXMgZnJvbSBJbnN0cnVjdG9y4oCZcyBtZWV0aW5nICAgIA0KIVtGaWxsIGluIG1lZXRpbmcgaW5mb3JtYXRpb24gb24gWm9vbSB0aGVuIGNsaWNrIHNhdmUsIERlc2NyaXB0aW9uIChPcHRpb25hbCkgY29tZXMgZnJvbSBJbnN0cnVjdG9y4oCZcyBtZWV0aW5nXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUGljdHVyZTEwLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGVlVEWDRJWVE2RkRZVzI1NllSMlU2RlEpDQoNClN0ZXAgNjogDQoNCiogWW91IHdpbGwgc2VlIHRoaXMgICANCiFbWW91IHdpbGwgc2VlIHRoaXNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9QaWN0dXJlMTEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZBRUpOMzIzWE4zQ1I2UUhZWVIyVTZHQSkNCg0KU3RlcCA3OiANCg0KKiBPbiBtZWV0aW5nIHRhYiwgaXQgc2hvdWxkIHRoZXJlICAgIA0KIVtPbiBtZWV0aW5nIHRhYiwgaXQgc2hvdWxkIHRoZXJlXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUGljdHVyZTEyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFRkdBRkZLVEhXU1RUTkJST1lSMlU2R1EpDQoNCl9fTG9jYWxpc3RfXyA8YSBuYW1lPSJMb2NhbGlzdCI+PC9hPiAgIA0KDQpTdGVwIDE6CQ0KDQoqIFN0YXJ0IGJ5IGNvcHlpbmcgYW4gb2xkIGV2ZW50ICANCiAgICAtIE1ha2Ugc3VyZSB5b3UgYXJlIHdvcmtpbmcgb24gY29weSAgDQotIEZpbGwgaW4gYWxsIGluZm9ybWF0aW9uIChMaWtlIGJlbG93KSAgDQogICAgLSBDbGljayDigJxJbmNsdWRlIEFib3ZlIGluIFNjaGVkdWxl4oCdICANCiAgICAtIERlbGV0ZSB0aGUgb2xkIENvbmZpcm1lZCBkYXRlcyAgDQogICAgLSBEZXNjcmlwdGlvbiBpcyBtYWRlIGZyb20gSW5zdHJ1Y3RvcuKAmXMgbWVldGluZyAgDQohW1N0YXJ0IGJ5IGNvcHlpbmcgYW4gb2xkIGV2ZW50XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvTG9jYWxpc3QxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFWU9MUUVQUUtENlBONUpQVVlSMldJUEEpICANCg0KU3RlcCAyOg0KDQoqIEZpbGwgb3V0IExvY2F0aW9uIChMaWtlIGJlbG93KSAgDQogICAgLSBDaGVjayBpZiBldmVudCBpcyBvbmx5IGluLXBlcnNvbiwgb25seSB2aXJ0dWFsIG9yIGh5YnJpZCAgDQohW0ZpbGwgb3V0IExvY2F0aW9uIChMaWtlIGJlbG93KV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0xvY2FsaXN0Mi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRlhEREFVUjdOWVFYS1ZNSllZUjJXSVBRKQ0KDQpTdGVwIDM6CQ0KDQoqIENoYW5nZSB0aGUgT3duZXIgdG8geW91cnNlbGYgCSAgDQogICAgLSBDaGVjayBWYW5pdHkgVVJMIChxY2xfd29ya3Nob3Bfc3RhdGFfZmEyMV8xMTE3KSAgDQohW0NoYW5nZSB0aGUgT3duZXIgdG8geW91cnNlbGZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9Mb2NhbGlzdDMucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZEVUJCTTRDRzZHU0dHVDJJWVIyV0lRQSkNCg0KU3RlcCA0OgkNCg0KKiBBZGQgYSBUaWNrZXQgVHlwZXMgIA0KICAgIC0gVmlydHVhbCBvciBJbi1QZXJzb24gKG9yIGJvdGgpICANCiAgICAtIE1ha2Ugc3VyZSBWaXJ0dWFsIGlzIGFsd2F5cyBvbiBUb3AgIA0KIVtBZGQgYSBUaWNrZXQgVHlwZXNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9Mb2NhbGlzdDQucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0Y3VjZBRUZJUDVSNFBYTkFJWVIyV0lRUSkNCg0KU3RlcCA1OgkNCg0KKiBBZGQgYSBWaXJ0dWFsIHRpY2tldCBuYW1lIGlzIFpPT00gYW5kIGRyYWcgdG8gdGhlIHJpZ2h0IHRpY2tldCB0eXBlIChwaWMgd3JvbmcpICANCiAgICAtIFRoZW4gZ28gaW50byBhZGRpdGlvbmFsIHRpY2tldCBvcHRpb25zICANCiFbQWRkIGEgVmlydHVhbCB0aWNrZXQgbmFtZSBpcyBaT09NIGFuZCBkcmFnIHRvIHRoZSByaWdodCB0aWNrZXQgdHlwZSAocGljIHdyb25nKV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0xvY2FsaXN0NS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRlZGTzZGUUdTQ0VURlVaRkVZUjJXSVJBKQ0KDQpTdGVwIDY6CQ0KDQoqIENoZWNrIHRvIG1ha2Ugc3VyZSBzZXR0aW5ncyBhcmUgY29ycmVjdCAgDQogICAgLSBNYWtlIHN1cmUgVGlja2V0IGF2YWlsYWJpbGl0eSBkYXRlcyBjb3JyZWN0bHkgZGF0ZWQgb3IgbGVmdCBibGFuayBpZiB5b3Ugd2lsbCBtYW51YWwgdHVybiBvZmYgIA0KIVtDaGVjayB0byBtYWtlIHN1cmUgc2V0dGluZ3MgYXJlIGNvcnJlY3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9Mb2NhbGlzdDYucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZPWFo1NENYUUZJSFhCQVpXWVIyV0lSUSkNCg0KU3RlcCA3OgkNCg0KKiAgQWRkIGluLXBlcnNvbiB0aWNrZXQgbmFtZWQgUUNMIENMQVNTUk9PTSBhbmQgZHJhZyB0byB0aGUgcmlnaHQgdGlja2V0IHR5cGUgKHBpYyB3cm9uZykgIA0KICAgIC0gVGhlbiBnbyBpbnRvIGFkZGl0aW9uYWwgdGlja2V0IG9wdGlvbnMgIA0KIVtBZGQgaW4tcGVyc29uIHRpY2tldCBuYW1lZCBRQ0wgQ0xBU1NST09NIGFuZCBkcmFnIHRvIHRoZSByaWdodCB0aWNrZXQgdHlwZSAocGljIHdyb25nKV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0xvY2FsaXN0Ny5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkxLSFlEU01TRE5TTUVVV1NZUjJXSVNBKQ0KDQpTdGVwIDg6CQ0KDQoqIENoZWNrIHRvIG1ha2Ugc3VyZSBzZXR0aW5nIGFyZSBjb3JyZWN0ICANCiFbQ2hlY2sgdG8gbWFrZSBzdXJlIHNldHRpbmcgYXJlIGNvcnJlY3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9Mb2NhbGlzdDgucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZSVVE2SzI1TlA2TldIQUlTWVIyV0lTUSkNCg0KDQpTdGVwIDk6CQ0KDQoqIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IEF0dGVuZGVlcyBRdWVzdGlvbnMgYXJlIGNvcnJlY3QgIA0KDQoxLgkiUGxlYXNlIGVudGVyIHlvdXIgc3R1ZGVudCBJRCAjIChNdXN0IGJlIDggY2hhcmFjdGVycykuIEZvciBhbGwgZmFjdWx0eS9zdGFmZi9ub24tQ2xhcmVtb250IENvbGxlZ2VzIHBlcnNvbiwgcGxlYXNlIGluc2VydCAwMDAwMDAwMC4iIChSZXF1aXJlZCkgIA0KMi4JIlBsZWFzZSBpbmRpY2F0ZSBnZW5kZXIgKG1hbGUgb3IgZmVtYWxlKSIgIA0KMy4JIldoaWNoIG9uZSBvZiB0aGUgQ2xhcmVtb250IENvbGxlZ2VzIGFyZSB5b3UgZnJvbT8iIChSZXF1aXJlZCkgIA0KNC4JIklmIG5vdCBmcm9tIHRoZSBDbGFyZW1vbnQgQ29sbGVnZXMsIHdoZXJlIGFyZSB5b3UgZnJvbT8iICANCjUuCSJBcmUgeW91IGEgRnJlc2htYW4sIFNvcGhvbW9yZSwgSnVuaW9yLCBTZW5pb3IsIEdyYWR1YXRlIFN0dWRlbnQsIEZhY3VsdHksIFN0YWZmIG9yIE90aGVyPyIgKFJlcXVpcmVkKSAgDQo2LgkiSWYgT3RoZXIsIHBsZWFzZSBzcGVjaWZ5OiIgICAgDQohW0NoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IEF0dGVuZGVlcyBRdWVzdGlvbnMgYXJlIGNvcnJlY3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9Mb2NhbGlzdDkucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZBRUI2WDJHWjI1T0VRRU5HWVIyV0lUQSkNCg0KU3RlcCAxMDoJDQoNCiogIENoZWNrIHRvIG1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBFdmVudCBDYXBhY2l0eSAgDQohW0NoZWNrIHRvIG1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBFdmVudCBDYXBhY2l0eV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0xjb2FsaXN0MTAucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZZNUozSE1LTEI3NzZJTFMyWVIyV0lWQSkNCg0KU3RlcCAxMToJDQoNCiogUHVibGlzaCBvciBOT1QgIA0KICAgIC0gTWFrZSBzdXJlIGlmIHlvdSBhcmUgcHVibGlzaGluZyB0aGF0IHRoZSBjaGVja21hcmsgaXMgY2hlY2tlZCAgIA0KICAgIC0gQnV0IGlmIHlvdSB3YW50IGFub3RoZXIgRmVsbG93IHRvIHJldmlldyB0aGVuIG1ha2Ugc3VyZSBwdWJsaXNoIGlzIG5vdCBjaGVja2VkICANCiAgICAtIFRoZW4gQ2xpY2sgU2F2ZSAgDQotIFRFU1QhIFRFU1QhIFRFU1QhICAgDQogICAgLSB3aGVuIHlvdSBzZXQgdXAgdGhlIHJlZ2lzdHJhdGlvbiBwYWdlcywgcGxlYXNlIHRlc3QgdGhlbSBieSByZWdpc3RlcmluZyBmb3IgdGhlIHdvcmtzaG9wcyBhbmQgc2VlICAgICAgIGlmIGV2ZXJ5dGhpbmcgd29ya3MgZmluZSBpbmNsdWRpbmcgdGhlIGVtYWlsIGNvbmZpcm1hdGlvbiwgWm9vbSBsaW5rcywgZXRjLiAgIA0KLSAgU2VuZCBEci4gUGFyayBhbiBlbWFpbCArIHBvc3QgYSBtZXNzYWdlIG9uIFRlYW1zIHNvIHRoYXQgSSBjYW4gYW5ub3VuY2UgdGhlbS4gIA0KIVtQdWJsaXNoIG9yIE5PVF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0xvY2FsaXN0MTEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZPVVRWUkFUUkpDSEZSVEU2WVIyV0lXQSkNCg0KDQojIyMjIFR3byBkYXlzIGJlZm9yZSBkYXkgb2Ygd29ya3Nob3AgPGEgbmFtZT0iVHdvIGRheXMgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcCI+PC9hPg0KX0Nsb3NlIFJlZ2lzdHJhdGlvbiBmb3Igd29ya3Nob3BfICANCg0KU3RlcCAxOiAgDQoNCiogRm9yIHRob3NlIHRoYXQgZG8gbm90IHJlcXVpcmUgZXh0ZW5zaXZlIHByaW9yIHByZXAsIGxldOKAmXMgY2xvc2UgdGhlbSA1IHBtIGEgZGF5IGJlZm9yZS4gQW5kLCAgICAgMiBkYXlzIHByaW9yIGZvciB0aG9zZSB0aGF0IHJlcXVpcmUgcmVxdWVzdGluZyBsaWNlbnNlcyAgICANCiAgICAtIEdvIGludG8gZXZlbnQgICAgIA0KICAgIC0gR28gaW50byB0aWNrZXRzICAgICANCiAgICAtIENsaWNrIGluYWN0aXZhdGUgb24gYW55IHRpY2tldHMgdGhhdCBhcmUgYWN0aXZlICAgIA0KIVtGb3IgdGhvc2UgdGhhdCBkbyBub3QgcmVxdWlyZSBleHRlbnNpdmUgcHJpb3IgcHJlcF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1R3b2RheXMxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFUFdBQTZOWTRPWkE3UUpPRVlSMzNCQVEpICANCg0KU3RlcCAyOiAgDQoNCiogWW91IHNob3VsZCBzZWUgdGhlIHRpY2tldCBzdGF0dXMgYXMgaW5hY3RpdmF0ZSAgICAgDQohW1lvdSBzaG91bGQgc2VlIHRoZSB0aWNrZXQgc3RhdHVzIGFzIGluYWN0aXZhdGUgIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1R3b2RheXMyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFT0RSM1BRN1VYNU1DWExGR1lSMzNCQlEpICANCg0KIyMjIyBEYXkgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcCA8YSBuYW1lPSJEYXkgYmVmb3JlIGRheSBvZiB3b3Jrc2hvcCI+PC9hPg0KDQpfX1F1YWx0cmljc19fIDxhIG5hbWU9IlF1YWx0cmljcyI+PC9hPg0KDQpTdGVwIDE6IA0KDQoqCU1ha2Ugc3VyZSB0byBtYWtlIGEgU2lnbiBhbmQgRXhpdCBvbmUgIA0KICAgIC0JTWFrZSBjb3B5IG9mIG9sZCBvbmUgICANCiAgICAgIC0JU2lnbiBpbiBmb3Igc2lnbiBpbiAoRmFsbF8yMDIxX1NpZ25pbl9TdXJ2ZXlfU1FMX0x2bDFfVmFuZXNzYV9DYXNpbGxhc18xMTE5KSAgDQogICAgICAtCUV4aXQgZm9yIEV4aXQgKEZhbGxfMjAyMV9FeGl0X1N1cnZleV9TUUxfTHZsMV9WYW5lc3NhX0Nhc2lsbGFzXzExMTkpICANCiFbTWFrZSBzdXJlIHRvIG1ha2UgYSBTaWduIGFuZCBFeGl0IG9uZSAgXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbHRyaWNzMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUxHWkpHT1JBWVFNWFVKUk9ZUjMzQ1pRKSAgDQoNClN0ZXAgMjogIA0KDQoqIENoYW5nZSBuYW1lIHRvIHdvcmtzaG9wIG5hbWUgYW5kIGluc3RydWN0b3IgIA0KIVtDaGFuZ2UgbmFtZSB0byB3b3Jrc2hvcCBuYW1lIGFuZCBpbnN0cnVjdG9yICBdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsdHJpY3MyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGUDI2TURSWUJUUEMzMlFJQVlSMzNDMkEpICANCg0KU3RlcCAzOiAgDQoNCiogQ2hhbmdlIHdvcmtzaG9wIHNpZ24taW4gZm9yIGFuZCBEYXRlL1RpbWUgIA0KICAgIC0gU2lnbi1pbiAgDQohW0NoYW5nZSB3b3Jrc2hvcCBzaWduLWluIGZvciBhbmQgRGF0ZS9UaW1lIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczMucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VFVkVPRFhWR1NXQlZTMjVFWVIzM0MyUSkgIA0KDQpTdGVwIDQ6ICANCg0KKiBDaGFuZ2Ugd29ya2Zsb3cgbGluayAgDQogICAgLSBJbiBlbWFpbCB0byB0aGUgd2VpcmQgY29kZSAgDQogICAgLSBNYWtlIHN1cmUgRHIuIFBhcmsgaXMgZ2V0dGluZyBhbiBlbWFpbCBzZW50IHRvIGhpbSAgDQohW0NoYW5nZSB3b3JrZmxvdyBsaW5rIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczQucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZON0tBUTJVR0VYT1lZR0JRWVIzM0MzQSkgDQohW0luIGVtYWlsIHRvIHRoZSB3ZWlyZCBjb2RlIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczUucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZLMldYN1BCVFhJUlpNRDJDWVIzM0MzUSkgICAgDQohW01ha2Ugc3VyZSBEci4gUGFyayBpcyBnZXR0aW5nIGFuIGVtYWlsIHNlbnQgdG8gaGltIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczYucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VBVlc3TlNWQjVHVTJQVjZLWVIzM0M0USkgIA0KDQpTdGVwIDU6ICANCg0KKiBFeGl0ICAgDQohW0V4aXRdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsdHJpY3M3LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGSFA1QkpJQVlENklVRFZCU1lSMzNDNUEpICANCg0KU3RlcCA2OiAgDQoNCiogQ2hhbmdlIHdvcmtmbG93IGxpbmsgIA0KICAgIC0gTWFrZSBzdXJlIERyLiBQYXJrIGlzIGdldHRpbmcgYW4gZW1haWwgc2VudCB0byBoaW0gIA0KIVtDaGFuZ2Ugd29ya2Zsb3cgbGlua10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczgucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZYUjVDUElKTE1RTlBNR0FVWVIzM0M2QSkgDQohW01ha2Ugc3VyZSBEci4gUGFyayBpcyBnZXR0aW5nIGFuIGVtYWlsIHNlbnQgdG8gaGltIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczkucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0U2V0pXR01KQ1ZPTk9CQjIyWVIzM0M3QSkgIA0KDQpTdGVwIDc6IA0KDQoqIENsaWNrIFB1Ymxpc2ggIA0KIVtDbGljayBQdWJsaXNoIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczEwLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSFdNWVhaQVEzTEFVTkY2NFlSMzNDN1EpICANCg0KU3RlcCA4OiAgDQoNCioJQ29weSBsaW5rIHRvIHVzZSBmb3IgQml0Lmx5IGxhdGVyIGFuZCBoaXQgcHVibGlzaCAgDQogICAgICAtIElmIHlvdSBmb3JnZXQgdG8gZ2V0IGhlcmUsIHlvdSBjYW4gc3RpbGwgZ2V0IGl0IHdoZW4geW91IG1ha2UgUVIgY29kZSAgDQohW0NvcHkgbGluayB0byB1c2UgZm9yIEJpdC5seSBsYXRlciBhbmQgaGl0IHB1Ymxpc2ggIF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1F1YWx0cmljczExLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGWjU3SklZUzNVT1YyRFdCR1lSMzNEQUEpICANCg0KU3RlcCA5OiAgDQoNCioJQmFyY29kZSBmb3IgV29yZCBkb2MgICANCiAgICAtCUFub255bW91cyBsaW5rIHdpbGwgZ2l2ZSB5b3UgdGhlIGxpbmsgb2YgdGhlIHN1cnZleSBhZ2FpbiB0byBwdXQgaW50byBCaXQubHkgIA0KICAgIC0JRG93bmxvYWQgUVIgY29kZSBmb3Igd29yZCBkb2MgdXNlICANCiFbQmFyY29kZSBmb3IgV29yZCBkb2NdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsdHJpY3MxMi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRTJJTkVDQ0paUU5KTk5VQk9ZUjMzREJBKSAgDQoNCl9fQml0Lmx5X18gPGEgbmFtZT0iQml0Lmx5Ij48L2E+DQoNCiFbQml0Lmx5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvQml0bHkxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFVlVUSU5KM1dOREhHRVQ2Q1lSMzRTSkEpICANCg0KU3RlcCAxOg0KDQoqCUNvcHkgYW5kIHBhc3RlIHRoZSBzaG9ydGVuIGxpbmsgaW50byB3b3JkIGRvYw0KIVtDb3B5IGFuZCBwYXN0ZSB0aGUgc2hvcnRlbiBsaW5rIGludG8gd29yZCBkb2NdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9CaXRseTIucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0Y2QVRSRk9HQ0c0TzZRNUdZWVIzNFNKUSkgIA0KDQpTdGVwIDI6DQoNCioJT25jZSB5b3UgY3JlYXRlIGEgcmVnaXN0cmF0aW9uIGZvcm0gb24gbG9jYWxpc3QsIHdvdWxkIHlvdSBwbGVhc2UgY3JlYXRlIGJpdC5seSBzaG9ydCBjdXQgYW5kIGxldCBtZSBrbm93PyBEbyB5b3Uga25vdyBob3cgdG8gY3JlYXRlIGEgYml0Lmx5IFVSTCBzaG9ydGN1dD8NCiAgICAtCWNyZWF0ZWQgc2hvcnRjdXRzIHdpdGggc29tZSBuYW1pbmcgY29udmVudGlvbiBzaGUgbWFkZSBmb3IgaGVyc2VsZi4NCiAgICAgICAgLQllLmcuLCBodHRwOi8vYml0Lmx5L3N1MjAyMS0wNS1leGNlbC1MMi1yZWcgDQogICAgICAgIC0JZS5nLiwgaHR0cHM6Ly9iaXQubHkvZmEyMDIxLWV4Y2VsLTEwMjANCg0KX19GbHllciBXb3JkIGRvY19fIDxhIG5hbWU9IkZseWVyIFdvcmQgZG9jIj48L2E+DQoNCioJQ2hhbmdlIHRvIGZpdCB3b3Jrc2hvcA0KICAgIC0JVGl0bGUNCiAgICAtCURhdGUgJiBUaW1lDQogICAgLQlJbnN0cnVjdG9yDQogICAgLQlRUiBDb2RlIGZyb20gUXVhbHRyaWNzDQogICAgLQlTaG9ydGVuIGxpbmsgZnJvbSBCaXQubHkgIA0KIVtDaGFuZ2UgdG8gZml0IHdvcmtzaG9wXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvRmx5ZXIxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFRVZSSTUzNElQWE1JUEtaUVlSMzRUUFEpICANCg0KX19FbWFpbHMgKHRvIGJlIHdyaXR0ZW4pX18gPGEgbmFtZT0iRW1haWxzICh0byBiZSB3cml0dGVuKSI+PC9hPg0KDQoNCl9fUmVtaW5kZXIgRW1haWxfXyA8YSBuYW1lPSJSZW1pbmRlciBFbWFpbCI+PC9hPg0KDQoqCVNlbmQgb3V0IGEgcmVtaW5kZXIgZW1haWwuIA0KICAtCUFkZA0KICAgIC0JVmlydHVhbCBXb3JrIGluZm86IFpvb20gaW52aXRhdGlvbiBsaW5rIChqdXN0IGluIGNhc2UpDQogICAgLQlJbi1QZXJzb24gSW5mbzoNCiAgICAtCUFueXRoaW5nIGluc3RydWN0b3Igd2FudHMgdG8gcmVsYXkgDQotCUV4YW1wbGUgMSAgDQohW0V4YW1wbGUgMV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1JlbWluZGVyMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUZWNzVRS1BHRENENkU0NFdZUjM0VUNBKSAgDQoNCi0JRXhhbXBsZSAyICANCiFbRXhhbXBsZSAyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVtaW5kZXIyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGQ1RMS1pTQkE1NlQzVFlPRVlSMzRVREEpICANCg0KDQotIEV4YW1wbGUgMyAgDQohW0V4YW1wbGUgM10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1JlbWluZGVyMy5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRTdZQzU1N1RGVElXNkgzWUVZUjM0VUVBKSAgDQoNCi0gRXhhbXBsZSA0ICANCg0KRGVhciBNQVRMQUIgKExldmVsIDEg4oCTIENvZGluZytDb21wdXRpbmcpIEF0dGVuZGVlczogIA0KIA0KVGhhbmsgeW91IGZvciByZWdpc3RlcmluZyBmb3IgdGhlIE1BVExBQiAoTGV2ZWwgMSDigJMgQ29kaW5nK0NvbXB1dGluZykgV29ya3Nob3AuDQoNCkdldHRpbmcgRXF1aXBwZWQgd2l0aCBNQVRMQUIgKExldmVsIDEg4oCTIENvZGluZytDb21wdXRpbmcpICANCg0KSW5zdHJ1Y3RvcjogQmhhdmVuIE1pc3RyeSAoQXNzaXN0YW50IERpcmVjdG9yIG9mIHRoZSBRQ0wpDQoNClN1bW1hcnk6ICAgIA0KV2FudCB0byBsZWFybiB0byBwcm9ncmFtLCBidXQgZG9u4oCZdCBrbm93IHdoZXJlIHRvIHN0YXJ0IG9yIHdoYXQgdG8gaW5zdGFsbD8gTUFUTEFCIGlzIGEgbnVtZXJpY2FsIGNvbXB1dGluZyBsYW5ndWFnZSBhbmQgZW52aXJvbm1lbnQgdGhhdCBpcyBzdXJwcmlzaW5nbHkgZWFzeSB0byB1c2UuIFR5cGljYWxseSB1c2VkIGJ5IGVuZ2luZWVycyBhbmQgc2NpZW50aXN0cywgeW91IGNhbiB0aGluayBvZiBpdCBhcyBhIHZlcnkgcG93ZXJmdWwsIGN1c3RvbWl6YWJsZSBjYWxjdWxhdG9yLiBCdXQsIGludGVyZXN0aW5nbHksIGl04oCZcyB0aGlzIHZlcnkgY2hhcmFjdGVyaXN0aWMgdGhhdCBtYWtlcyBNQVRMQUIgYW4gaWRlYWwgbGFuZ3VhZ2UgZm9yIHByb2dyYW1taW5nIGJlZ2lubmVycywgZXZlbiBpZiB5b3XigJlyZSBub3QgbWF0aGVtYXRpY2FsbHkgaW5jbGluZWQuDQpJbiB0aGlzIHdvcmtzaG9wLCB3ZSB3aWxsIHN0ZXAgeW91IHRocm91Z2ggdGhlIGJhc2ljcyBvZiBwcm9ncmFtbWluZyB1c2luZyB0aGUgTUFUTEFCIGNvZGluZyBlbnZpcm9ubWVudC4gV2Ugd2lsbCBzdGFydCBieSBnZXR0aW5nIGZhbWlsaWFyIHdpdGggdGhlIHNvZnR3YXJlLCBsZWFybmluZyB0aGUgYmFzaWNzIG9mIHZhcmlhYmxlIGFzc2lnbm1lbnQgYW5kIG1hbmlwdWxhdGlvbiwgd3JpdGluZyBvdXIgb3duIGZ1bmN0aW9ucywgYW5kIGV4cGxvcmluZyBzb21lIGFwcGxpY2F0aW9ucy4gSWYgeW914oCZcmUgY29tcGxldGVseSBuZXcgdG8gcHJvZ3JhbW1pbmcsIGxlYXJuaW5nIHRoZSBmdW5kYW1lbnRhbHMgd2l0aCBNQVRMQUIgZmlyc3QgaXMgYSBncmVhdCB3YXkgdG8gc3ByaW5nYm9hcmQgaW50byBvdGhlciBsYW5ndWFnZXMuIEFsdGVybmF0aXZlbHksIGlmIHlvdSBoYXZlIHNvbWUgZXhwZXJpZW5jZSB3aXRoIHByb2dyYW1taW5nLCBidXQgaGF2ZSBhbHdheXMgd2FudGVkIHRvIGxlYXJuIHdoYXQgTUFUTEFCIGlzIHVzZWQgZm9yLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgZmVldCB3ZXQuDQoNClByZS1yZXF1aXNpdGVzOiAgDQpJbnRlcm5ldCBVc2U6IEludHJvZHVjdG9yeSBsZXZlbCAoc2VhcmNoLCBsb2ctaW4sIG5hdmlnYXRpb24gb2Ygd2Vic2l0ZXMsIGV0Yy4pDQpTb2Z0d2FyZTogQXR0ZW5kZWVzIGFyZSBhc2tlZCB0byBoYXZlIE1BVExBQiBvbiB0aGVpciBjb21wdXRlcnMgZm9yIHRoZSB3b3Jrc2hvcC4gTUFUTEFCIGlzIGF2YWlsYWJsZSBmb3IgQ01DIHN0dWRlbnRzIGFuZCBmYWN1bHR5IGF0IGh0dHBzOi8vd3d3LmNtYy5lZHUvaW5mb3JtYXRpb24tdGVjaG5vbG9neS9hY2FkZW1pYy1zb2Z0d2FyZQ0KDQpMb2NhdGlvbjogIA0KT25saW5lIChBdHRlbmRlZXMgd2lsbCByZWNlaXZlIHRoZSBab29tIG1lZXRpbmcgaW5mb3JtYXRpb24gYWZ0ZXIgcmVnaXN0cmF0aW9uKQ0KDQpQYXJ0aWNpcGFudHM6ICANCg0KT3BlbiB0byBhbGwgQ01DIFN0dWRlbnRzLCBGYWN1bHR5IGFuZCBTdGFmZg0KDQpJIGFtIGF0dGFjaGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHdvcmtzaG9wIGJlbG93OiAgIA0KUUNMIFdvcmtzaG9wIGlzIGludml0aW5nIHlvdSB0byBhIHNjaGVkdWxlZCBab29tIG1lZXRpbmcuDQoNClRvcGljOiBbUUNMIFdvcmtzaG9wXSBHZXQgRXF1aXBwZWQgd2l0aCBNQVRMQUINCg0KVGltZTogU2VwIDI5LCAyMDIxIDAzOjAwIFBNIFBhY2lmaWMgVGltZSAoVVMgYW5kIENhbmFkYSkNCg0KSm9pbiBab29tIE1lZXRpbmcNCg0KaHR0cHM6Ly9jbWMtaXRzLnpvb20udXMvai84Mzc3MzU0NzYxMD9wd2Q9WTJsb2EzVm9XblF2V0ZReFVEZzFWMHhJYkhCTmR6MDkNCg0KTWVldGluZyBJRDogODM3IDczNTQgNzYxMA0KDQpQYXNzY29kZTogd29ya3Nob3AhDQoNClJlcXVpcmVkIFNvZnR3YXJlL0FjY291bnQgDQoNCmh0dHBzOi8vd3d3LmNtYy5lZHUvaW5mb3JtYXRpb24tdGVjaG5vbG9neS9hY2FkZW1pYy1zb2Z0d2FyZQ0KDQpMZXQgbWUga25vdyBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zLiANCiANCkJlc3QgcmVnYXJkcywgICANClZhbmVzc2EgQ2FzaWxsYXMgICANClFDTCBHcmFkdWF0ZSBGZWxsb3cgICANCg0KX19BdHRlbmRlZXMgRW1haWxzX18gPGEgbmFtZT0iQXR0ZW5kZWVzIEVtYWlscyI+PC9hPg0KDQoqCUdvIHRvIExvY2FsaXN0IGFuZCBjbGljayBvbiBldmVudCAgDQohW0dvIHRvIExvY2FsaXN0IGFuZCBjbGljayBvbiBldmVudF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL0F0dGVuZGVlczEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZZSE9YTVlaVFpZTFNINTNNWVIzNFdJUSkgIA0KDQoqCUNsaWNrIG9uIFZpZXcgQ29uZmlybWVkIFRpY2tldHMgIA0KIVtDbGljayBvbiBWaWV3IENvbmZpcm1lZCBUaWNrZXRzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvQXR0ZW5kZWVzMi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRVU0V0lMQlZZREMyTVNWSkVZUjM0V0pBKSAgDQoNCioJQ2xpY2sgRXhwb3J0IENTViAgDQohW0NsaWNrIEV4cG9ydCBDU1ZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9BdHRlbmRlZXMzLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSkhBN0E0QUlXM1laSDJYS1lSMzRXSkEpICANCg0KKglHbyB0byBlbWFpbCBhbmQgZG93bmxvYWQgdGhlIENTViAgDQohW0dvIHRvIGVtYWlsIGFuZCBkb3dubG9hZCB0aGUgQ1NWXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvQXR0ZW5kZWVzNC5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUtHUTVSWUxMRFgzV0JMR0FZUjM0V0pRKSAgDQoNCioJT3BlbiBDU1YgYW5kIGNvcHkgZW1haWxzIGludG8geW91ciByZW1pbmRlciBlbWFpbCAgDQohW09wZW4gQ1NWIGFuZCBjb3B5IGVtYWlscyBpbnRvIHlvdXIgcmVtaW5kZXIgZW1haWxdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9BdHRlbmRlZXM1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGUjdDNFdSVjdGWFpTNVhaU1lSMzRXS1EpICANCg0KIyMjIyBEYXkgb2Ygd29ya3Nob3AgPGEgbmFtZT0iRGF5IG9mIHdvcmtzaG9wIj48L2E+DQoNCl9fTW9kZXJhdG9yIGNoZWNrbGlzdF9fIDxhIG5hbWU9Ik1vZGVyYXRvciBjaGVja2xpc3QiPjwvYT4NCg0KKglNb3JuaW5nIG9mDQogICAgLQlQYXN0ZSBab29tIGluZm8gaW4gUUNMIFdvcmtzaG9wIOKAkyBXb3Jrc2hvcCBDb250cm9sIEJvb3RoIGNoYXQgaW4gVGVhbXMgDQogICAgLQlTZW5kIG91dCByZW1pbmRlcnMgaWYgeW91IGhhdmVu4oCZdCBhbHJlYWR5DQotCVNob3cgdXAgMzAgbWludXRlcyBiZWZvcmUgd29ya3Nob3ANCiAgICAtCVByaW50IG91dCBmbHllcnMNCiAgICAgICAgLQlQdXQgb24gdGFibGVzIHdoZXJlIHRoZSBhdHRlbmRlZXMgd2lsbCBzaXQNCiAgICAtCUxvZyBpbnRvIFpvb20gKHdvcmtzaG9wcykNCiAgICAgICAgLQlTdGFydCAzMCBtaW51dGVzIGJlZm9yZQ0KICAgICAgICAtCUNoZWNrIGF1ZGlvIGFuZCB2aWRlbw0KICAgICAgICAtCU1ha2UgSW5zdHJ1Y3RvciBjby1ob3N0DQogICAgICAgIC0JVGVzdCBydW5zIHdpdGggaW5zdHJ1Y3Rvcg0KICAgIC0JR2V0IHNob3J0ZW4gbGlua3MgZnJvbSBiaXQubHkgcmVhZHkNCiAgICAtCVNldC11cCBjYW1lcmENCiAgICAtCVB1dCB0aGUgc3BvdGxpZ2h0IG9uIHdvcmtzaG9wIHZpZGVvIGZlZWQNCiAgICAtCU1ha2Ugc3VyZSB0aGUgaW5zdHJ1Y3RvciBpcyBzY3JlZW5zaGFyaW5nDQotCVRpbWUgb2YgdGhlIHdvcmtzaG9wDQogICAgLQlXZWxjb21lIGV2ZXJ5b25lOiAoY2hhbmdlIHdoZW4gbmVjZXNzYXJ5IGZvciBvbmx5IHZpcnR1YWwgb3Igb25seSBpbiBwZXJzb24gd29ya3Nob3BzKQ0KICAgICAgICAtCVdlbGNvbWUgdG8gdGhlIFFDTCEgVG9kYXnigJlzIHdvcmtzaG9wIGlzIChuYW1lIG9mIGV2ZW50KSBpbnN0cnVjdGVkIGJ5IChuYW1lIG9mICAgICAgICAgICAgICAgaW5zdHJ1Y3Rvci4gTXkgbmFtZSBpcyAoeW91ciBuYW1lKSBhbmQgSSAoYXMgd2VsbCBhcyAob3RoZXIgbW9kZXJhdG9yKSkgd2lsbCB5b3VyICAgICAgICAgICAgICBtb2RlcmF0b3JzIGZvciB0b2RheeKAmXMgd29ya3Nob3AuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgY29uY2VybnMgdGhyb3VnaG91dCB0aGUgICAgICAgICAgc2Vzc2lvbiwgcGxlYXNlIHdyaXRlIGluIGNoYXQgZm9yIG91ciB2aXJ0dWFsIGF0dGVuZGVlcyBvciByYWlzZSBvciBoYXZlIGZvciBvdXIgICAgICAgICAgICAgICBpbi1wZXJzb24gYXR0ZW5kZWVzLiBCZWZvcmUgd2Ugc3RhcnQsIHBsZWFzZSBtYWtlIHN1cmUgdG8gc2lnbiBpbiB3aXRoIGVpdGhlciB0aGUgUVIgICAgICAgICAgIGNvZGUgb3IgdGhlIGxpbmsgcHJvdmlkZWQuIExhc3RseSwgdGhpcyB3b3Jrc2hvcCB3aWxsIGJlIHJlY29yZGVkLiBFbmpveSENCiAgICAgICAgLQlMaW5rIHNpZ24taW4gc3VydmV5IGluIGNoYXQgYW5kIGxpbmtzIGZvciB3b3Jrc2hvcCBmcm9tIGluc3RydWN0b3IgDQpXZWxjb21lISBQbGVhc2Ugc2lnbi1pbjogaHR0cHM6Ly9iaXQubHkvM3pETnpQaiANCkxpbmsgZnJvbSBpbnN0cnVjdG9yOiBodHRwczovL2dpdGh1Yi5jb20vQ01DLVFDTC9FeGNlbC1MMi1Xb3Jrc2hvcA0KSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBjb25jZXJucyB0aHJvdWdob3V0IHRoZSBzZXNzaW9uLCBwbGVhc2Ugd3JpdGUgaW4gY2hhdCBAZXZlcnlvbmUuDQpUaGFuayB5b3UhIFBsZWFzZSBzaWduLW91dDogaHR0cHM6Ly9iaXQubHkvM0VJT2dkWCANCiAgICAtCUNsaWNrIFJlY29yZA0KICAgICAgICAtIE5vdGU6IGlmIG9uIGJyZWFrLCBjbGljayBwYXVzZSBub3Qgc3RvcCwgd2Ugd2FudCB0aGUgbGVhc3QgbnVtYmVyIG9mIGZpbGVzIG1hZGUNCiAgICAtCUNoZWNrIGluIGF0dGVuZGVlcyB3aG8gYXR0ZW5kIG9uIExvY2FsaXN0DQogICAgICAgIC0JQ3Jvc3MgY2hlY2sgb3ZlciBRdWFsdHJpY3MgdG8gbWFrZSBzdXJlIHRoYXQgYXR0ZW5kZWVzIHRha2Ugc3VydmV5IGFzIHdlbGwNCiAgICAtCUludGVycnVwdCB0aGUgaW5zdHJ1Y3RvciBpZiBhbiBhdHRlbmRlZSBvbmxpbmUgaGFzIGEgcXVlc3Rpb24gb3IgaWYgdGhlIGF0dGVuZGVlICAgICAgICAgICAgICAgaW4tcGVyc29uIGhhcyBub3QgYmVlbiBzZWVuIHJhaXNpbmcgdGhlaXIgaGFuZC4NCi0JRW5kIG9mIHdvcmtzaG9wDQogICAgLQlMaW5rIEV4aXQgc3VydmV5IGluIGNoYXQNCiAgICAtCVRoYW5rIGV2ZXJ5b25lIGZvciBjb21pbmcNCiAgICAtCUNsZWFuIHVwIGFuZCBiYWNrIHVwDQotCVNlbmQgZW1haWwgcmVtaW5kZXIgaWYgdGhlcmUgaXMgYSBsb3cgcmF0ZSBmb3Igc3VydmV5cyANCi0JU2VuZCB6b29tIG1lZXRpbmcgcmVjb3JkaW5ncyB0byBhdHRlbmRlZXMgdGhhdCBhdHRlbmRlZA0KICAgIC0JTm90ZTogYWZ0ZXIgZXZlcnkgc2VtZXN0ZXIgd2UgZHVtcCByZWNvcmRpbmdzIGludG8gYSBib3ggZmlsZSwgYmVmb3JlIENNQyBkb2VzIGl0DQoNCiMjIyMgRGF5IGFmdGVyIHdvcmtzaG9wIDxhIG5hbWU9IkRheSBhZnRlciB3b3Jrc2hvcCI+PC9hPg0KDQpfX1F1YWx0cmljc19fIDxhIG5hbWU9IlF1YWx0cmljcyI+PC9hPg0KDQoqCUdpdmUg4oCcQ29sbGFib3JhdGXigJ0gdG8gaW5zdHJ1Y3RvciBvbiBzdXJ2ZXlzDQoNCl9fWm9vbSBSZWNvcmRpbmdzX18gPGEgbmFtZT0iWm9vbSBSZWNvcmRpbmdzIj48L2E+DQoNCioJT25seSBwcm92aWRlZCB0byB0aGUgYXR0ZW5kZWVzIHRoYXQgc2hvd2VkIHVwIGZvciB0aGUgd29ya3Nob3ANCioJUmVjb3JkcyBhcmUgcmVhZHkgdG8gc2VuZCB0aGUgbmV4dCBkYXkgYWZ0ZXIgdGhlIHdvcmtzaG9wDQohW09wZW4gQ1NWIGFuZCBjb3B5IGVtYWlscyBpbnRvIHlvdXIgcmVtaW5kZXIgZW1haWxdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9ab29tMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRk5FUFdNTUNYVkZaWkNLVEFZUjM0WkVBKSAgDQoNCl9fRW5kaW5nIGVtYWlsIGV4YW1wbGVfXyA8YSBuYW1lPSJFbmRpbmcgZW1haWwgZXhhbXBsZSI+PC9hPg0KDQpTdWJqZWN0OiBUaGFuayB5b3UgZm9yIGF0dGVuZGluZyB0aGUgKG5hbWUgb2Ygd29ya3Nob3ApIFdvcmtzaG9wDQoNCkhlbGxvIChuYW1lIG9mIHdvcmtzaG9wKSBhdHRlbmRlZXMsDQoNClRoYW5rIHlvdSBmb3IgYXR0ZW5kaW5nIHRoZSB3b3Jrc2hvcC4gDQoNCkkgaGF2ZSBwcm92aWRlZCB0aGUgbGlua3MgZm9yIHNpZ24taW4gYW5kIHNpZ24tb3V0Og0KDQpTaWduLWluOg0KKExpbmsgb2Ygc3VydmV5KSANCg0KU2lnbi1vdXQ6DQooTGluayBvZiBzdXJ2ZXkpDQoNClBsZWFzZSBtYWtlIHN1cmUgdG8gY29tcGxldGUgdGhlIHN1cnZleXMsIHRoZXkgY291bnQgYXMgeW91ciBhdHRlbmRhbmNlLiBJZiB5b3UgaGF2ZSBhbHJlYWR5IGNvbXBsZXRlZCB0aGVtLCB0aGFuayB5b3UuDQoNCihhbGwgcGFzdGVkIGZyb20gem9vbSkNCg0KTm90ZTogcmVjb3JkcyBhcmUgb25seSBwcm92aWRlZCBpZiB5b3UgYXR0ZW5kIHRoZSB3b3Jrc2hvcCANCg0KTGFzdGx5LCBpZiB0aGVyZSB3YXMgYW55IGhvbWV3b3JrIGFzc2lnbmVkIGZvciB0aGlzIHdvcmtzaG9wLCBwbGVhc2Ugc2VuZCBhbGwgZG9jdW1lbnRzIHRvOiBxY2xAY21jLmVkdSBmb3IgZ3JhZGluZy4NCg0KVGhhbmsgeW91LCANCih5b3VyIG5hbWUpDQpRQ0wgR3JhZHVhdGUgRmVsbG93DQoNCiMjIyMgV29ya3Nob3AgSXNzdWVzIDxhIG5hbWU9IldvcmtzaG9wIElzc3VlcyI+PC9hPg0KDQpfX05ldyBhdHRlbmRlZXMgYWZ0ZXIgY2xvc2VkIHJlZ2lzdHJhdGlvbl9fDQoNCioJRW1haWwgdG8gc3R1ZGVudCBmb3IgaW5mb3JtYXRpb246IChEbyBub3QgdG8gYXNrIGZvciBwZW9wbGXigJlzIGdlbmRlciBmb3IgdGhlIG5ldyBhdHRlbmRlZeKAmXMgZW1haWxzIGFzIGl0IGlzIG9wdGlvbmFsIG9uIG91ciBmb3JtLikNCg0KU3ViamVjdDogW1FDTF0gT25saW5lIFdvcmtzaG9wIG9uIG5hbWUgKGRhdGUgYXQgdGltZSkgYW5kIG5hbWUgKGRhdGUgYXQgdGltZSkgIA0KW0JjYydkIGV2ZXJ5b25lIGVsc2UgZXhjZXB0IFFDTCBGZWxsb3dzXQ0KDQpIaSAobmFtZSBvZiBuZXcgYXR0ZW5kZWUpLA0KIA0KV291bGQgeW91IGxpa2UgdG8gcmVnaXN0ZXIgZm9yIGJvdGggRXhjZWwgMSBhbmQgRXhjZWwgMiBzZXNzaW9ucz8NCiANCkFsc28sIGFyZSB5b3UgYWJsZSB0byBwcm92aWRlIG1lIGZvbGxvd2luZyBpbmZvcm1hdGlvbj8gIA0KMS4gICAgICBQbGVhc2UgZW50ZXIgeW91ciBzdHVkZW50IElEICMgKE11c3QgYmUgOCBjaGFyYWN0ZXJzKS4gRm9yIGFsbCBmYWN1bHR5L3N0YWZmL25vbi1DbGFyZW1vbnQgQ29sbGVnZXMgcGVyc29uLCBwbGVhc2UgaW5zZXJ0IDAwMDAwMDAwLiAgDQoyLiAgICAgIEdlbmRlciAgDQozLiAgICAgIEFyZSB5b3UgYSBGcmVzaG1hbiwgU29waG9tb3JlLCBKdW5pb3IsIFNlbmlvciwgR3JhZHVhdGUgU3R1ZGVudCwgRmFjdWx0eSwgU3RhZmYgb3IgT3RoZXI/ICANCg0KUGxlYXNlIG5vdGUgdGhhdCB3ZSB1c3VhbGx5IGNsb3NlIHJlZ2lzdHJhdGlvbiAxIHRvIDMgZGF5cyBwcmlvciAoZGVwZW5kaW5nIG9uIHRoZSBwcmVwYXJhdGlvbiBuZWVkZWQgdG8gc2V0IHVwIGEgd29ya2luZyBlbnZpcm9ubWVudCkgdG8gd29ya3Nob3AgZXZlbnRzLg0KIA0KQmVzdCByZWdhcmRzLCAgDQpRQ0wgR3JhZHVhdGUgRmVsbG93IChwdXQgeW91ciBuYW1lIGhlcmUpICANCg0KKiBJc3N1ZSBUaWNrZXQgdGFiIG9uIENvbmZpcm1lZCBUaWNrZXRzIHBhZ2UNCiFbSXNzdWUgVGlja2V0IHRhYiBvbiBDb25maXJtZWQgVGlja2V0cyBwYWdlXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvSXNzdWVzMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRldDSlRKUENPT1ZaQjZCTUNZUjM2NjJBKSAgDQoNCioJRmlsbCBpbiBhbGwgaW5mbw0KIVtGaWxsIGluIGFsbCBpbmZvXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvSXNzdWVzMi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkdOWFIySzNZUDRNUEFVS0lZUjM2NjJRKSAgDQoNCioJQWZ0ZXIgZmlsbGluZyBvdXQgdGhlIGZvcm0sIHRoZSBhdHRlbmRlZSB3aWxsIGdldCBhbiBlbWFpbCBmcm9tIExvY2FsaXN0DQogICAgLQlTZW5kIG91dCBhbiBlbWFpbCBmb2xsb3cgdXAgdG8gdGhlIG5ldyBhdHRlbmRlZQ0KICAgIA0KU3ViamVjdDogW1FDTCBXb3Jrc2hvcF0gTmFtZSBvZiB3b3Jrc2hvcCDigJMgQXZhaWxhYmlsaXR5DQoNCkhpIChuYW1lIG9mIG5ldyBhdHRlbmRlZSksDQoNCkkgaGF2ZSBpbnB1dCB5b3VyIGluZm9ybWF0aW9uIGludG8gTG9jYWxpc3QgZm9yIHRoZSAobmFtZSBvZiB3b3Jrc2hvcCkgd29ya3Nob3AuDQoNCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIExvY2FsaXN0IHRpY2tldCBieSBub3cuDQoNClBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zLg0KDQpCZXN0IHJlZ2FyZHMsIA0KUUNMIEdyYWR1YXRlIEZlbGxvdyAocHV0IHlvdXIgbmFtZSBoZXJlKSANCg0KKglJZiB5b3UganVzdCBpbnB1dCwgdGhlIG5ldyBhdHRlbmRlZSB3aXRob3V0IGluZm9ybWF0aW9uLCBzZW5kIHRoaXMgZW1haWwNCg0KU3ViamVjdDogW1FDTCBXb3Jrc2hvcF0gTmFtZSBvZiB3b3Jrc2hvcCDigJMgQXZhaWxhYmlsaXR5DQoNCkhpIChuYW1lIG9mIG5ldyBhdHRlbmRlZSksDQoNCkkganVzdCByZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBKYW5uYSB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIHJlZ2lzdGVyIGZvciB0aGUgKG5hbWUgb2Ygd29ya3Nob3ApIHdvcmtzaG9wLg0KDQpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBMb2NhbGlzdCB0aWNrZXQgYnkgbm93Lg0KDQpQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucy4NCg0KQmVzdCByZWdhcmRzLCANClFDTCBHcmFkdWF0ZSBGZWxsb3cgKHB1dCB5b3VyIG5hbWUgaGVyZSkgDQogDQoqCU5vdGU6IFdlIHR5cGljYWxseSBoYXZlIDE1IHNlYXRzIGJ1dCB3YWl0IGxpc3QgaXMgNQ0KDQpfX0NoZWNrIGF0dGVuZGVl4oCZcyBlbWFpbHNfXw0KDQoqCUZpeCBlbWFpbHMsIHNvbWV0aW1lcyB0aGV5IG1pc3NwZWxsIHRoZWlyIGVtYWlscw0KDQojIyMjIGUuIEJ1eWluZyBhIHRpY2tldCDigJMgTWFraW5nIHN1cmUgaXQgd29ya3MgPGEgbmFtZT0iQnV5aW5nIGEgdGlja2V0IOKAkyBNYWtpbmcgc3VyZSBpdCB3b3JrcyI+PC9hPg0KcGljMw0KIVtwaWMzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvYnV5aW5nMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUFGSlhJR0NFRzVHNkdKMllZUjM3QTNBKSAgDQpwaWM0DQohW3BpYzRdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9idXlpbmcyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSjZJUFozSTMzRkZMS0tLV1lSMzdBNEEpICANCnBpYzUNCiFbcGljNV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL2J1eWluZzMucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZOQ1JSTUhZWUlHNlhNNjNTWVIzN0E0USkgIA0KcGljNg0KIVtwaWM2XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvYnV5aW5nNC5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRlIzSlI0T0pYSVlSUU9ISE9ZUjM3QTRRKSAgDQpwaWM3DQohW3BpYzddKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9idXlpbmc1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGRkNZUjM3TEpHRzVLUFU3NllSMzdBNVEpICANCnBpYzgNCiFbcGljOF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL2J1eWluZzYucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZDM1RXNDVRVFQyNFM3SUVNWVIzN0E2QSkgIA0KcGljOQ0KIVtwaWM5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvYnV5aW5nNy5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkpZQ0VaUlRYT0JLS1NYV1dZUjM3QTdBKQ0KIA0KIyMjIyBmLiBDaGFuZ2luZyBXZWJzaXRlIDxhIG5hbWU9IkNoYW5naW5nIFdlYnNpdGUiPjwvYT4NCg0KcGljMTANCiFbcGljMTBdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy93ZWJzaXRlMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRjQyNERNTzZXWUVVQTZMNFNZUjM3RExRKQ0KcGljMTENCiFbcGljMTFdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy93ZWJzaXRlMi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkRCRlhXSzZESFBKTFIyQjRZUjM3RE1RKQ0KcGljMTINCiFbcGljMTJdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy93ZWJzaXRlMy5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkhITlBXVFBDRUNYQVpYUENZUjM3RE5RKQ0KcGljMTMNCiFbcGljMTNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy93ZWJzaXRlNC5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRVBTM0JGUDZHSUQyTVVCUVNZUjM3RE9BKQ0KDQojIyMjIGcuIENoZWNrbGlzdCBmb3IgYSBUeXBpY2FsIFdvcmtkYXkgPGEgbmFtZT0iQ2hlY2tsaXN0IGZvciBhIFR5cGljYWwgV29ya2RheSI+PC9hPg0KDQpUaGlzIGlzIGlmIHRoZXJlIGlzIG5vIHdvcmtzaG9wIG9yIGFwcG9pbnRtZW50IGdvaW5nIG9uDQoNCioJQ2hlY2sgZW1haWwNCiAgICAtCVdyaXRlIGJhY2sgdG8gYW55b25lDQogICAgLQlTZW5kIGFueSBlbWFpbHMgdGhhdCBoYXZlIGJlZW4gb24gVE9ETyBsaXN0DQogICAgLQlPcmdhbml6ZSB5b3VyIGVtYWlscyBpbiB0aGVpciByZXNwZWN0aXZlIGZvbGRlcnMNCiFbT3JnYW5pemUgeW91ciBlbWFpbHMgaW4gdGhlaXIgcmVzcGVjdGl2ZSBmb2xkZXJzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvQ2hlY2tsaXN0MS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRVdGWUZYT0dOWk9JUlFDRDJZUjM3RVZBKQ0KLQlVcGRhdGUgUUNMIHdlYnNpdGUNCi0JRGF5IGFmdGVyIHdvcmtzaG9wDQogICAgLQlTZW5kIG91dCBlbWFpbCBvZiBjbG9zaW5nIHdvcmtzaG9wDQogICAgICAgIC0JUmVjb3JkaW5nLCBzdXJ2ZXkgbGlua3MsIHRoYW5rIHlvdQ0KLQlUd28gd2Vla3MgcHJpb3Igd29yawkNCiAgICAtCUNoZWNrIHdoYXQgaXMgY29taW5nIGluIHR3byB3ZWVrcw0KICAgICAgICAtCVNldCBhcHBvaW50bWVudHMgdG8gbWVldCB3aXRoIGluc3RydWN0b3JzDQogICAgICAgICAgICAtCUdldCBzdW1tYXJpZXMNCiAgICAgICAgICAgIC0JVG9vbHMNCiAgICAgICAgICAgIC0JUG9pbnQgcG9pbnRzDQogICAgICAgICAgICAtCWZpbGVzDQogICAgICAgICAgICAtCUxpY2Vuc2VzDQotCU9uZSB3ZWVrIGJlZm9yZSB3b3JrDQogICAgLQlMb2NhbGlzdCBhbmQgem9vbQ0KICAgIC0JTGV0IERyLiBQYXJrIGtub3cgdGhleSBhcmUgcmVhZHkgdG8gYmUgYW5ub3VuY2VkIA0KLQlUd28gZGF5cyBiZWZvcmUgd29yaw0KICAgIC0JU2VuZCBvdXQgcmVtaW5kZXIgZW1haWxzIHRvIGxvY2FsaXN0IGF0dGVuZGVlcyBmb3IgdXBjb21pbmcgd29ya3Nob3ANCi0JR2V0IGxpY2Vuc2VzIGluZm9ybWF0aW9uIG91dA0KICAgIC0JQ2xvc2Ugb2xkIFF1YWx0cmljcyBzdXJ2ZXlzDQogICAgLQlNYWtlIG5ldyBRdWFsdHJpY3Mgc3VydmV5cyBmb3IgdXBjb21pbmcgd29ya3Nob3BzDQogICAgLQlNYWtlIFFSIGNvZGVzL0JpdC5seSBmb3IgdXBjb21pbmcgd29ya3Nob3ANCglPdGhlciB3b3JrDQoJICAtCUdyYXBoaWMgRGVzaWduDQotCU1ha2Ugd29ya3Nob3BzDQogICAgLQlTUUwNCiAgICAtCUVYQ0VMDQogICAgLQlHSVMNCi0JV29ya2RheQ0KICAgIC0JUHV0IGluIHNjaGVkdWxlDQogICAgDQojIyMjIGguIEJ1aWxkaW5nIGEgV29ya3Nob3AgPGEgbmFtZT0iQnVpbGRpbmcgYSBXb3Jrc2hvcCI+PC9hPg0KDQpfX0dpdGh1Yl9fIDxhIG5hbWU9IkdpdGh1YiI+PC9hPg0KDQohW3BpYzE1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvQnVpbGRpbmcxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFRk9UT1lEM0ZUVVFBWDJUVVlSMzdGU0EpDQoNCioJRmlsZXMgbmVlZGVkIGluIEdpdGh1Yg0KICAgIC0JUHJlLXdvcmtzaG9wIHJlcXVpcmVtZW50cw0KICAgIC0JUHJlc2VudGF0aW9uIHBkZg0KICAgIC0JRmlsZXMgZm9yIGhhbmQtb24gYWN0aXZpdGllcw0KICAgIC0JUkVBRE1FLm1kIA0KICAgICAgICAtCUEgc3VtbWFyeSBvZiB0aGUgd29ya3Nob3AgZm9yIGxvY2FsaXN0IGFuZCB6b29tDQoNCiFbQSBzdW1tYXJ5IG9mIHRoZSB3b3Jrc2hvcCBmb3IgbG9jYWxpc3QgYW5kIHpvb21dKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9CdWlsZGluZzIucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZHRTdMU05XVFU1SEtJTTM2WVIzN0ZTUSkNCg0KX19QcmUtd29ya3Nob3AgcmVxdWlyZW1lbnRzIFBERl9fIDxhIG5hbWU9IlByZS13b3Jrc2hvcCByZXF1aXJlbWVudHMgUERGIj48L2E+DQoNCioJTWFrZSBpbiBwcm9ncmFtIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSAoaS5lLiwgUG93ZXJwb2ludCwgQXJjR2lzIFN0b3JpZXMpDQotCU1ha2UgaXQgaW50byBhIFBERiB0byBzZW5kIGJlZm9yZSB3b3Jrc2hvcA0KLQlEb3dubG9hZGluZyBzb2Z0d2FyZSBIb3cgdG8gZm9yIE1hYyBhbmQgV2luZG93cw0KLQlMaWNlbnNlIGluZm9ybWF0aW9uDQotCUV4cGxhaW4gd2hhdCB0byBicmluZyB0byB3b3Jrc2hvcA0KDQpfX1ByZXNlbnRhdGlvbiBQREZfXyA8YSBuYW1lPSJQcmVzZW50YXRpb24gUERGIj48L2E+DQoqCU1ha2UgaW4gcHJvZ3JhbSB5b3Ugd291bGQgbGlrZSB0byB1c2UgKGkuZS4sIFBvd2VycG9pbnQsIEFyY0dpcyBTdG9yaWVzKQ0KLQlNYWtlIGl0IGludG8gYSBQREYgdG8gc2VuZCBhZnRlciB3b3Jrc2hvcA0KLQlCZWdpbm5lcnPigJkgbWF0ZXJpYWwgZm9yIExldmVsIDENCi0JUmVxdWlyZWQgU2xpZGVzIChtYWtlIHN1cmUgdG8gZG8gdGhlIG1hdGVyaWFsIGluIGNodWNrcykNCiAgICAtCVRpdGxlIHBhZ2UNCiAgICAtCUJlZm9yZSB3ZSBzdGFydA0KICAgIC0JRG93bmxvYWQgSW5mb3JtYXRpb24gDQogICAgLQlBZ2VuZGENCiAgICAtCU92ZXJ2aWV3DQogICAgLQlWb2NhYnVsYXJ5DQogICAgLQlUb2RheeKAmXMgRGF0YQ0KICAgIC0JRGVtbyBBZ2VuZGENCiAgICAtCURlbW8gU2xpZGVzDQogICAgLQlBY3Rpdml0eQ0KICAgIC0JUXVlc3Rpb25zDQogICAgLQlBbnN3ZXJzDQogICAgLQlSZXNvdXJjZXMNCiAgICAtCUNvbnRhY3QgaW5mbw0KDQpfX0ZpbGVzX18gPGEgbmFtZT0iRmlsZXMiPjwvYT4NCg0KKglEYXRhIGZpbGVzIHRvIGltcG9ydCANCiAgICAtCUhhbmQtb24gYWN0aXZpdGllcyANCi0JT3RoZXIgZmlsZXMgb2YgaW50ZXJlc3QNCg0KIyMjIyBpLiBXb3Jrc2hvcHMgQnVpbGRpbmcgPGEgbmFtZT0iV29ya3Nob3BzIEJ1aWxkaW5nIj48L2E+DQoNCioJSW4gdGhlIHBhc3QsIHRoZSB3YXkgd2Ugb2ZmZXIgb3VyIHdvcmtzaG9wIHRvIHNwZWNpZmljIGluc3RpdHV0ZSBsaWtlIExvd2Ugd2FzIHRoYXQgd2UgKENpbmR5KSB3b3JrZWQgd2l0aCB0aGVpciBhZG1pbiBvciBzdHVkZW50IGxlYWRlciB0byBmaW5kIGdvb2QgdGltZXMgZm9yIHRoZWlyIGZlbGxvd3MgYW5kIFJBcyBhbmQgb2ZmZXIgYSBzZXBhcmF0ZSB3b3Jrc2hvcChzKSBmb3IgdGhlbS4gSSBhbSB0aGlua2luZyB3ZSB3b3VsZCB3YW50IHRvIG9mZmVyIHRoZW0gYSBzZXBhcmF0ZSBHSVMgd29ya3Nob3AocykuDQoNCldobyBhc2tlZCBmb3IgUUNMIHRyYWluaW5nczogDQogDQpicm9va2UuYmVybmFsQGNsYXJlbW9udG1ja2VubmEuZWR1IChSb3NlIEluc3RpdHV0ZSkgIA0KYnJpdHRhbnkuYnJhc0BjbGFyZW1vbnRtY2tlbm5hLmVkdSAoUm9zZSBJbnN0aXR1dGUpICANCktyaXN0aW4uTWlsbGVyQENsYXJlbW9udE1jS2VubmEuZWR1IChSb2JlcnRzIEVudmlyb25tZW50IENlbnRlcikgIA0KbnBhdGVsMjFAc3R1ZGVudHMuY2xhcmVtb250bWNrZW5uYS5lZHUgKFN0dWRlbnQgTWFuYWdlciBSb3NlIEluc3RpdHV0ZSkgIA0KamVubmlmZXIuZmVpdG9zYUBjbGFyZW1vbnRtY2tlbm5hLmVkdSAoUHN5Y2hvbG9neSwgYXNrZWQgZm9yIFNQU1MgYW5kIEV4Y2VsKSAgDQogDQogDQpXaG8geW91IGNhbiBhc2sgZm9yIFFDTCB3b3Jrc2hvcHM6DQogDQpKZWFuaW5lIEZpbm4gamVhbmluZS5maW5uQGNsYXJlbW9udC5lZHUgKFVuaXggU2hlbGwgYW5kIEdpdCkgIA0KQnJhbmRvbiBCYWsgYnJhbmRvbmJha0BnbWFpbC5jb20gKEFsdGVyeXgpICANCkNpbmR5IENoZW5nIGNpbmR5LmNoZW5nQGNndS5lZHUgKFBvd2VyIEJJKSAgDQpBbGZvbnNvIExhbmRlcm9zIGFsYW5kZXJvc0B1Y2xhLmVkdSAoSnVsaWEpICANCkFhc2hpdGEgS2VzYXJ3YW5pIGFrZXNhcndhbmlAaG1jLmVkdSAoTUwpICANCkJyYWQgTWNDYXVsZXkgYm1jY2F1bGV5QGhtYy5lZHUgKGJhc2ggc2NyaXB0KSAgDQogDQpTUUwgZGF0YXNldCB1c2VkIGZvciBGYWxsIDIwMjAgYXR0YWNoZWQuIA0KDQojIyMjIGouIFpvb20gUmVjb3JkaW5nIERvd25sb2FkcyA8YSBuYW1lPSJab29tIFJlY29yZGluZyBEb3dubG9hZHMiPjwvYT4NCg0KV2UgYXJlIHJlYWNoaW5nIG91dCB0b2RheSB3aXRoIGEgZnJpZW5kbHkgYW5kIGltcG9ydGFudCByZW1pbmRlciB0byBwbGVhc2UgdHJhbnNmZXIgb3IgZGVsZXRlIHlvdXIgb2xkZXIgWm9vbSBjbG91ZCByZWNvcmRpbmdzIHdpdGhpbiB5b3VyIFpvb20gYWNjb3VudCB0byBoZWxwIGVuc3VyZSB0aGF0IHdlIGNhbiBjb250aW51ZSB0byBwcm92aWRlIHRoaXMgc2VydmljZSB0byBvdXIgZmFjdWx0eSBhbmQgc3RhZmYgd2l0aG91dCBhY2NydWluZyBhZGRpdGlvbmFsIHN0b3JhZ2UgZXhwZW5zZXMuDQoNCk91ciBab29tIGNsb3VkIHJlY29yZGluZyBzdG9yYWdlIGN1cnJlbnRseSBoYXMgYSBzaGFyZWQgcXVvdGEgb2YgMSB0ZXJhYnl0ZSBmb3IgYWxsIHVzZXJzIGFuZCBhYm91dCAxIGdpZ2FieXRlIG9mIHN0b3JhZ2UgcGVyIGluZGl2aWR1YWwgdXNlci4gSG93ZXZlciwgd2Ugbm93IGhhdmUgc2V2ZXJhbCBab29tIGFjY291bnRzIHRoYXQgYXJlIHdheSBvdmVyIHRoZSAxIGdpZ2FieXRlIHN0b3JhZ2UgYWxsb3RtZW50LiBUbyBjb2xsZWN0aXZlbHkgaGVscCBzYXZlIHNwYWNlLCB3ZSByZWNvbW1lbmQgdGhhdCBhbGwgdXNlcnMgZG93bmxvYWQgdGhlaXIgWm9vbSByZWNvcmRpbmdzIGFuZCBzdG9yZSB0aGVtIGluIGFuIGFsdGVybmF0ZSBsb2NhdGlvbiwgc3VjaCBhcyBCb3ggd2hlcmUgbXVjaCBtb3JlIHN0b3JhZ2Ugc3BhY2UgaXMgYXZhaWxhYmxlLiBPbmNlIHlvdeKAmXZlIHN0b3JlZCB0aGUgcmVjb3JkaW5ncyBpbiBhbiBhbHRlcm5hdGUgbG9jYXRpb24sIHBsZWFzZSBtYWtlIHN1cmUgdG8gZ28gYmFjayBhbmQgZGVsZXRlIHRoZSByZWNvcmRpbmdzIGZyb20geW91ciBab29tIGNsb3VkIHN0b3JhZ2UuDQoNCkFjdGlvbiBOZWVkZWQ6DQoNCioJSWYgeW91IHVzZSBab29tIGNsb3VkIHJlY29yZGluZyDigJMgcGxlYXNlIGZvbGxvdyB0aGUgYmVsb3cgaW5zdHJ1Y3Rpb25zIGZvciBvZmZsb2FkaW5nIHlvdXIgcmVjb3JkaW5ncyBhbmQgdGhlbiBkZWxldGUgdGhlbSBvZmYgWm9vbSBvbmNlIHRyYW5zZmVycmVkDQoNCl9Ib3cgdG8gRG93bmxvYWQgWW91ciBab29tIENsb3VkIFJlY29yZGluZ3M6Xw0KDQoxLiBMb2dpbiB0byB0aGUgWm9vbS51cyB3ZWIgcG9ydGFsIChodHRwczovL3pvb20udXMpIA0KDQoyLiBJbiB0aGUgbGVmdC1oYW5kIG5hdmlnYXRpb24gbWVudSwgY2xpY2sgUmVjb3JkaW5ncyAoZGlyZWN0IGxpbms6IGh0dHBzOi8vem9vbS51cy9yZWNvcmRpbmcpDQoNCjMuIENsaWNrIE1vcmUgbmV4dCB0byBhIG1lZXRpbmcgcmVjb3JkaW5nIGFuZCBjbGljayBEb3dubG9hZA0KDQohW0NsaWNrIE1vcmUgbmV4dCB0byBhIG1lZXRpbmcgcmVjb3JkaW5nIGFuZCBjbGljayBEb3dubG9hZF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1JlY29yZGluZzEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0U2Mk1QWFdMTzdSQVZYTFQyWVIzN0c3USkNCg0KNC4gQ2xpY2sgRG93bmxvYWQgb24gdGhlIHBvcC11cCB0aGF0IGFwcGVhcnMNCg0KIVtDbGljayBEb3dubG9hZCBvbiB0aGUgcG9wLXVwIHRoYXQgYXBwZWFyc10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1JlY29yZGluZzIucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VER0ZEWk1FSUtQN0hNRzdTWVIzN0hCQSkNCg0KNS4gQ2xpY2sgQWxsb3cgaWYgcHJvbXB0ZWQgZm9yIHBlcm1pc3Npb24gdG8gRG93bmxvYWQgbXVsdGlwbGUgZmlsZXMuDQoNCiFbQ2xpY2sgQWxsb3cgaWYgcHJvbXB0ZWQgZm9yIHBlcm1pc3Npb24gdG8gRG93bmxvYWQgbXVsdGlwbGUgZmlsZXMuXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVjb3JkaW5nMy5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUZSNlc2Sk1ZRjRMQVAyNjJZUjM3SENBKQ0KDQo2LiBDaGVjayB5b3VyIERvd25sb2FkcyBmb2xkZXIgZm9yIHlvdXIgcmVjb3JkaW5nIGZpbGVzICgubTRhIGZvciBhdWRpbyBhbmQgLm1wNCBmb3IgdmlkZW8pDQoNCk9uY2UgZG93bmxvYWRlZCwgeW91IGNhbiB1cGxvYWQgeW91ciBmaWxlcyB0byB5b3VyIEJveCBhY2NvdW50IChodHRwczovL2NsYXJlbW9udG1ja2VubmEuYm94LmNvbSkuIEJveCBoYXMgYSB2ZXJ5IGxhcmdlIHN0b3JhZ2UgY2FwYWNpdHkgcGVyIHVzZXIgYW5kIGNhbiBiZSBpbmNyZWFzZWQgd2hlbiBuZWNlc3NhcnkuDQoNCk9uY2UgeW91ciBmaWxlcyBhcmUgb24gQm94IG9yIHN0b3JlZCBzb21ld2hlcmUgc2FmZSBvZmYgWm9vbSwgeW91IGNhbiBzaGFyZSB5b3VyIGZpbGVzIHdpdGggb3RoZXJzIHVzaW5nIHRoZSBpbnN0cnVjdGlvbnMgb3V0bGluZWQgaW4gdGhlIGF0dGFjaGVkIFBERiBndWlkZSBjYWxsZWQg4oCcU2hhcmluZyBGaWxlcyBpbiBCb3jigJ0uDQoNCkFsdGVybmF0aXZlbHksIGlmIHlvdeKAmWQgbGlrZSB0byB1c2UgbG9jYWwgcmVjb3JkaW5nIGluc3RlYWQgd2l0aCBab29tLCB3ZSBoYXZlIGF0dGFjaGVkIGd1aWRlcyBmb3IgdGhpcyBhcyB3ZWxsLiAgSG93ZXZlciwgd2Ugb25seSByZWNvbW1lbmQgdGhpcyBmb3Igbm9uLWNyaXRpY2FsIGV2ZW50cyBhbmQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoZSBjbGFzc3Jvb20gc2V0dGluZy4NCg0KcGljMjANCiFbcGljMjBdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9SZWNvcmRpbmc0LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGRkJSTlpDRTczWU5RRFFBMllSMzdKRVEpDQpwaWMyMQ0KIVtwaWMyMV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1JlY29yZGluZzUucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZGWTRaQ1lYS0ZYN1FFTlpVWVIzN0pFUSkNCnBpYzIyDQohW3BpYzIyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVjb3JkaW5nNi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkk2TkZUNzROTVJLSkQ2MkNZUjM3SkZBKQ0KcGljMjMNCiFbcGljMjNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9SZWNvcmRpbmc3LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSFBEQ1JUT1JUMlhXREVGR1lSMzdKR0EpDQpwaWMyNA0KIVtwaWMyNF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1JlY29yZGluZzgucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0U3VDJSTFQ2M0dVWDIyQUdNWVIzN0pHUSkNCnBpYzI1DQohW3BpYzI1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVjb3JkaW5nOS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRTY0MkNYS0JMU0ZTTlhDTDRZUjM3SkhBKQ0KcGljMjYNCiFbcGljMjZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9SZWNvcmRpbmcxMC5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRUpUNVFPQlRJQ09BUzJJUkFZUjM3SklBKQ0KcGljMjcNCiFbcGljMjddKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9SZWNvcmRpbmcxMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRlFVNkhSNkVHVVZOT0dNVkNZUjM3SklRKQ0KDQojIyMjIGsuIFF1YWx0cmljcyBNYWtlIGEgV29ya2Zsb3cgPGEgbmFtZT0iUXVhbHRyaWNzIE1ha2UgYSBXb3JrZmxvdyI+PC9hPg0KDQoqCVNpZ24taW4gU3VydmV5DQoNCnF1YWwxDQohW3F1YWwxXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZBVkpZRE5TR0JTTUNTNllJWVIzN1JLQSkNCnF1YWwyDQohW3F1YWwyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDIucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZHREtWNFZZTVZSMlNNNVk2WVIzN1JNQSkNCnF1YWwzDQohW3F1YWwzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDMucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0U2STZMV09STUFXTjJHSldPWVIzN1JOQSkNCnF1YWw0DQohW3F1YWw0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDQucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZINlMyWU1LTUQ3UjdURTZDWVIzN1JOUSkNCnF1YWw1DQohW3F1YWw1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDUucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VPU0ZaV0Q3SE40N1JPUjNTWVIzN1JPQSkNCnF1YWw2DQohW3F1YWw2XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDYucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VDWVVKQTJEVkNRREdUTDYyWVIzN1JPUSkNCnF1YWw3DQohW3F1YWw3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDcucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VOWlBFWFpRNlJHWEFLU09LWVIzN1JSQSkNCnF1YWw4DQohW3F1YWw4XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDgucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VHSFJUSEJXSFlDS0NTTTNTWVIzN1NUUSkNCnF1YWw5DQohW3F1YWw5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDkucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZMNkxLVDRUSTNET1JYUTNDWVIzN1NVQSkNCnF1YWwxMA0KIVtxdWFsMTBdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTAucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VYNllRUEdFTEJCV0Q3UjJRWVIzN1NWUSkNCnF1YWwxMQ0KIVtxdWFsMTFdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZHUEozWlJaWTZEMzVEM0c0WVIzN1NXQSkNCnF1YWwxMg0KIVtxdWFsMTJdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTIucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZRSVpLTFYzWUY2QjJSU0lVWVIzN1NXUSkNCnF1YWwxMw0KIVtxdWFsMTNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTMucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VKREo1SDZOQVdXSkpDRkk0WVIzN1RSUSkNCnF1YWwxNA0KIVtxdWFsMTRdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTQucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VUV1JKSVQzN1lMTUI3RlFPWVIzN1RTQSkNCnF1YWwxNQ0KIVtxdWFsMTVdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTUucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZPQVlPUUw3Wkw1VVdJNkNLWVIzN1RTUSkNCnF1YWwxNg0KIVtxdWFsMTZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9RdWFsMTYucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZTNFlGUk5HNURDV0VDRk9BWVIzN1RVUSkNCg0KKiBFeGl0IFN1cnZleQ0KDQpxdWFsMTcNCiFbcXVhbDE3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDE3LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFUklGVEEyQlBPNEFCWFZaUVlSMzdVSlEpDQpxdWFsMTgNCiFbcXVhbDE4XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDE4LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGNUNMQjZMWk5IWjRZWFpHWVlSMzdVS0EpDQpxdWFsMTkNCiFbcXVhbDE5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDE5LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGTDRFNks3RlJDTzVYUDRQQ1lSMzdVS1EpDQpxdWFsMjANCiFbcXVhbDIwXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDIwLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGM0tCTjZIWlhWUkFSTTY0SVlSMzdVTEEpDQpxdWFsMjENCiFbcXVhbDIxXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDIxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSERNRjdZNko0R0JLTzRRUVlSMzdVTUEpDQpxdWFsMjINCiFbcXVhbDIyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDIyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGTFdBTUhST1ZQNllGWUlNUVlSMzdVTUEpDQpxdWFsMjMNCiFbcXVhbDIzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDIzLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFVlE0REtLWkJVVURWRVhZMllSMzdXWVEpDQpxdWFsMjQNCiFbcXVhbDI0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDI0LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGNU5KSUFNQTdORkFMSEpRQVlSMzdXWkEpDQpxdWFsMjUNCiFbcXVhbDI1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDI1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFWllBT1ZLWlQ2RFZLV1VPT1lSMzdXWlEpDQpxdWFsMjYNCiFbcXVhbDI2XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDI2LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGNTJZQVdXRVVDMjNaQjVXV1lSMzdXMkEpDQpxdWFsMjcNCiFbcXVhbDI3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDI3LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFQjdFT0pLUU41STYyUFpUU1lSMzdXMlEpDQpxdWFsMjgNCiFbcXVhbDI4XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUXVhbDI4LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGSzdaSEZNUEFPS1hJQUEyRVlSMzdXM0EpDQoNCl9fXw0KDQojIyMjIGwuIEhvdyB0byBzY2hlZHVsZSBtZWV0aW5ncyBvbiBab29tIDxhIG5hbWU9IkhvdyB0byBzY2hlZHVsZSBtZWV0aW5ncyBvbiBab29tIj48L2E+DQoNCm1lZXRpbmcxDQohW21lZXRpbmcxXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvbWVldGluZzEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0UyNEw2Uk1GU040RzdBVU9PWVIzN1lJQSkNCg0KbWVldGluZzINCiFbbWVldGluZzJdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9tZWV0aW5nMi5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRVZWWk9DSjRITlBLTTdIV01ZUjM3WUpBKQ0KDQoqKioNCg0KIyMjIDEyLiAgUUNMIEltcGFjdCBSZXBvcnQgIDxhIG5hbWU9IlFDTCBJbXBhY3QgUmVwb3J0Ij48L2E+DQppbXBhY3QxDQohW2ltcGFjdDFdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9JbXBhY3QxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFVkVVM0c1M1FRM0JaUVhRUVlSMzdZNUEpDQoNCl9fXw0KDQojIyMjIGEuIFF1YWx0cmljcyDigJMgUmVwb3J0cyAgPGEgbmFtZT0iUXVhbHRyaWNzIOKAkyBSZXBvcnRzIj48L2E+DQpSZXBvcnRzUTENCiFbUmVwb3J0c1ExXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3ExLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSzZEVklGSlNSQUlMQk9BTVlSMzc1NkEpDQpSZXBvcnRzUTINCiFbUmVwb3J0c1EyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3EyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFUUlNUVhXUzRTVk5CUjNZTVlSMzc1NlEpDQpSZXBvcnRzUTMNCiFbUmVwb3J0c1EzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3EzLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFTE9DWUMyQ0JBUVlMR1BCNllSMzc1NlEpDQpSZXBvcnRzUTQNCiFbUmVwb3J0c1E0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3E0LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGUVlBTzRSVVQ1VFJRQkNJUVlSMzc1N0EpDQpSZXBvcnRzUTUNCiFbUmVwb3J0c1E1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3E1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGUFBUSE1ORkxDMlZCSlpLUVlSMzc1N1EpDQpSZXBvcnRzUTYNCiFbUmVwb3J0c1E2XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3E2LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFTDI0RlBTSE5XNEZZSUtJVVlSMzc2QUEpDQpSZXBvcnRzUTcNCiFbUmVwb3J0c1E3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3E3LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFNUZOM05KRllDQ0ZTVTJPWVlSMzc2QVEpDQpSZXBvcnRzUTgNCiFbUmVwb3J0c1E4XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3E4LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGUkdHVkJDUTdMV0VORzRQUVlSMzc2QkEpDQpSZXBvcnRzUTkNCiFbUmVwb3J0c1E5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c3E5LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGVk80UDdBRFVIQjZRV0dFMllSMzc2QlEpDQoNCiMjIyMgYi4gTG9jYWxpc3Qg4oCTIFJlcG9ydHMgIDxhIG5hbWU9IkxvY2FsaXN0IOKAkyBSZXBvcnRzIj48L2E+DQpSZXBvcnRzTDENCiFbUmVwb3J0c0wxXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2wxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFMlhZQUxWSEhQSDZRNkhRR1lSMzc3WVEpDQpSZXBvcnRzTDINCiFbUmVwb3J0c0wyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2wyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGRU1ITkpQSFY2QVEzSE5MNllSMzc3WkEpDQpSZXBvcnRzTDMNCiFbUmVwb3J0c0wzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2wzLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFWkIyU0lVTElEUkxKV1pFT1lSMzc3WlEpDQpSZXBvcnRzTDQNCiFbUmVwb3J0c0w0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2w0LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFSkJEU003NkJUQ0g1Vkk2U1lSMzc3MkEpDQpSZXBvcnRzTDUNCiFbUmVwb3J0c0w1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2w1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGT09FSFlNS1VDUFFJRVUzWVlSMzc3MlEpDQpSZXBvcnRzTDYNCiFbUmVwb3J0c0w2XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2w2LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGS1NWWFo3NldaQTZZWjdTU1lSMzc3M0EpDQpSZXBvcnRzTDcNCiFbUmVwb3J0c0w3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2w3LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGVkxBNE5ZM1FGU0U2Rk1KMllSMzc3M1EpDQpSZXBvcnRzTDgNCiFbUmVwb3J0c0w4XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUmVwb3J0c2w4LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFMkE2M1BESUpJWFRFNVJGQ1lSMzc3NEEpDQoNCiMjIyMgYy4gU3VtbWFyaWVzICA8YSBuYW1lPSJTdW1tYXJpZXMiPjwvYT4NCnN1bW1hcmllczENCiFbc3VtbWFyaWVzMV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1N1bW1hcmllczEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VWTVhHRUUzSVlXRFdCQjVZWVI0QUJOQSkNCg0KX19NaXNzaW5nIERhdGFfXyAgPGEgbmFtZT0iTWlzc2luZyBEYXRhIj48L2E+DQptaXNzaW5nMQ0KIVttaXNzaW5nMV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL01pc3NpbmcxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGQk1aWEw2QUVTNlhZRTdYV1lSNEFCMkEpDQoNCl9fTG9jYWxpc3RfXyAgPGEgbmFtZT0iTG9jYWxpc3QiPjwvYT4NClN1bUwxDQohW1N1bUwxXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvU3VtbDEucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0Y2VFM0Rk01QTdKNVlUTVBJWVI0QUNBUSkNCg0KKglOZWVkIHRvIGdldCBFdmVudCBOYW1lIGFuZCBFdmVudCBJRCBmcm9tIHNpdGUgYW5kIG1hbnVhbGx5IGlucHV0IGl0IGluDQpzdW1MMg0KIVtzdW1MMl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1N1bWwyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFS0ZLNlBQUEMyVTRRSEZDMllSNEFDQkEpDQoNCl9fUXVhbHRyaWNzX18gIDxhIG5hbWU9IlF1YWx0cmljcyI+PC9hPg0Kc3VtUTENCiFbc3VtUTFdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DTUMtUUNML2ZlbGxvdy1oYW5kYm9vay9tYWluL0ltYWdlcy9TdW1xMS5wbmc/dG9rZW49R0hTQVQwQUFBQUFBQlFIWVpTRkxBNlA0N1VMVENSRFpBV0FZUjRBREJBKQ0KDQpfRXhpdF8NCnN1bXEyDQohW3N1bXEyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvU3VtcTIucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0VTTVVDWVJVT0xCQllYWDdHWVI0QURCQSkNCnN1bXEzDQohW3N1bXEzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvU3VtcTMucG5nP3Rva2VuPUdIU0FUMEFBQUFBQUJRSFlaU0ZaTkFJUEpKWFFEMlZEN0tJWVI0QURCUSkNCg0KX1NpZ24gaW5fDQpzdW1xNA0KIVtzdW1xNF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1N1bXE0LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGUkFMU1lLNk5XQUJETkE1WVlSNEFEQ0EpDQpzdW1xNQ0KIVtzdW1xNV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0NNQy1RQ0wvZmVsbG93LWhhbmRib29rL21haW4vSW1hZ2VzL1N1bXE1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGSVpPS05JR0pDNlE1QlUzQVlSNEFEQ1EpDQoNCiMjIyMgZC4gUm91Z2ggRHJhZnQgSW1wYWN0IFJlcG9ydCAgPGEgbmFtZT0iUm91Z2ggRHJhZnQgSW1wYWN0IFJlcG9ydCI+PC9hPg0KDQpSb3VnaDENCiFbUm91Z2gxXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUm91Z2gxLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFQzRDVU9ZUkFQVjdKTkNXQVlSNEFFR0EpDQpSb3VnaDINCiFbUm91Z2gyXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUm91Z2gyLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGVTJDNkhQS0dNWFNUWVlXTVlSNEFFR1EpDQpSb3VnaDMNCiFbUm91Z2gzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUm91Z2gzLnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGVU9ZSERUUEI2T05BWVBRTVlSNEFFSEEpDQpSb3VnaDQNCiFbUm91Z2g0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUm91Z2g0LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNFUkpNS0ZRVVNNU1kyQjNWV1lSNEFFSUEpDQpSb3VnaDUNCiFbUm91Z2g1XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ01DLVFDTC9mZWxsb3ctaGFuZGJvb2svbWFpbi9JbWFnZXMvUm91Z2g1LnBuZz90b2tlbj1HSFNBVDBBQUFBQUFCUUhZWlNGWjU3U0pSVUJKWE9WUVVJSVlSNEFFSUEp